首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在MacOS的SwiftUI中向TextFields添加建议(参见下面的gif )?

在MacOS的SwiftUI中向TextFields添加建议,可以通过使用NSComboBox来实现。NSComboBox是一个下拉列表框,可以显示建议选项供用户选择。

以下是实现的步骤:

  1. 导入AppKit框架:在SwiftUI项目中,需要使用AppKit框架来使用NSComboBox。在需要使用的文件中,添加import AppKit
  2. 创建一个NSComboBox对象:在SwiftUI的View中,使用NSViewRepresentable协议来创建一个自定义的NSComboBox视图。创建一个新的Swift文件,命名为ComboBox.swift,并添加以下代码:
代码语言:txt
复制
import SwiftUI
import AppKit

struct ComboBox: NSViewRepresentable {
    @Binding var selectedValue: String
    var suggestions: [String]

    func makeNSView(context: Context) -> NSComboBox {
        let comboBox = NSComboBox()
        comboBox.delegate = context.coordinator
        comboBox.isEditable = true
        comboBox.addItems(withObjectValues: suggestions)
        return comboBox
    }

    func updateNSView(_ nsView: NSComboBox, context: Context) {
        nsView.stringValue = selectedValue
    }

    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }

    class Coordinator: NSObject, NSComboBoxDelegate {
        let parent: ComboBox

        init(_ comboBox: ComboBox) {
            parent = comboBox
        }

        func comboBoxSelectionDidChange(_ notification: Notification) {
            if let comboBox = notification.object as? NSComboBox {
                parent.selectedValue = comboBox.stringValue
            }
        }
    }
}
  1. 在SwiftUI视图中使用ComboBox:在需要添加建议的TextField前,使用ComboBox视图来替代TextField。在SwiftUI的View中,使用@State来绑定选中的建议值,并提供一个建议列表。例如:
代码语言:txt
复制
struct ContentView: View {
    @State private var suggestion: String = ""
    let suggestions = ["Apple", "Banana", "Orange"]

    var body: some View {
        VStack {
            ComboBox(selectedValue: $suggestion, suggestions: suggestions)
                .frame(width: 200, height: 30)
                .padding()

            TextField("Enter text", text: $suggestion)
                .textFieldStyle(RoundedBorderTextFieldStyle())
                .padding()
        }
    }
}

在上述代码中,ComboBox视图使用selectedValue绑定选中的建议值,suggestions提供建议列表。TextField使用$suggestion来绑定输入的文本。

这样,当用户在TextField中输入时,ComboBox会显示建议列表供用户选择。用户选择的建议值会自动更新到TextField中。

请注意,由于SwiftUI在MacOS上的限制,无法直接在TextField中添加建议。因此,需要使用NSComboBox来实现这个功能。

希望这个解决方案对你有帮助!如果你想了解更多关于SwiftUI和MacOS开发的内容,可以参考腾讯云的相关产品和文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券