首页
学习
活动
专区
工具
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开发的内容,可以参考腾讯云的相关产品和文档:

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

相关·内容

Ask Apple 2022 与 SwiftUI 有关问答(

Ask Apple 为开发者与苹果工程师创造了在 WWDC 之外进行直接交流机会。本文对本次活动SwiftUI 有关一些问答进行了整理,并添加了一点个人见解。本文为下篇。...你可以使用符合 ObservableObject 协议不同对象来分割失效范围有时,不依赖 @Published 而获得一些手动控制并直接 objectWillChange 发布变化是很有用添加一个中间视图...Swiftcord[12] 代码展示了如何在 SwiftUI 实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集响应效率[13] 一文,了解苹果工程师推荐方法。...macOS APIQ:对于运行 Monterey Mac,能否如何在 SwiftUI 实现下面需求建议:打开一个窗口在该窗口中初始化数据找到所有打开窗口确定一个窗口是否打开从不在该窗口视图中关闭一个窗口...Text 与 TextField 在编辑模式切换Q:在 editMode 文档建议,在非编辑模式,可以选择将 Text 视图换成 TextField 。

14.8K30

Ask Apple 2022 与 SwiftUI 有关问答(上)

Ask Apple 为开发者与苹果工程师创造了在 WWDC 之外进行直接交流机会。本文对本次活动SwiftUI 有关一些问答进行了整理,并添加了一点个人见解。本文为上篇。...在使用 environmentObject 情况,如何避免创建实例视图被重新计算Q:如何在避免重新计算顶层视图 body 情况,在不同子树两个子视图之间共享状态( 例如 ObservableObject...阅读 SwiftUI 动画机制[8] 一文,了解更多有关动画内容。自适应高度 SheetQ:如何在 iOS16 呈现与动态内容高度相匹配 Sheet?...image-20221022135907441为 Stepper 添加快捷键Q:我们如何为 SwiftUI Stepper( 在 MacOS 上 )添加增量和减量操作快捷键?...A:实现近似行为方法是在菜单中使用命令来提供相同操作。通常情况,应该有列表让人们知道有哪些键盘快捷键可用。但是,如果这不适合你使用情况,我们会对这方面的增强请求反馈感兴趣。

12.3K20
  • 一文看完 WWDC 2022 音视频相关更新要点丨音视频工程示例

    在此规范,无论是在服务器端还是客户端,它不再需要依赖 SSAI 特殊标签。...通过该功能可以已有的 CDN 列表添加 CDN 路径。配置文件添加 CDN 路径时无需填写完整 URI,只需填写服务器和参数字段支持灵活 URI 替换规则。...2.2、基于 CoreImage、Metal、SwiftUI 展示 EDR 内容 参见:Display EDR content with Core Image, Metal, and SwiftUI[4...] 在这个 Session ,回顾了一 EDR 相关概念和术语,然后展示了一个基于 Core Image 来添加 EDR 支持 Demo,最后提到了如何用 CIFilter 来创建支持 EDR...7.3、AR 体验设计建议 参见:Qualities of great AR experiences[22] 这个 Session 主要讨论了创建 AR 应用时一些设计建议

    2.6K10

    SwiftUI 4.0 全新导航系统

    受 NavigationView 能力限制,开发者需要动用各种技巧乃至黑科技才能实现一些本应具备基本功能(例如:返回根视图、堆栈添加任意视图、返回任意层级视图 、Deep Link 跳转等 )。...⚠️ 在使用堆栈管理系统情况,请不要在编程式导航混用声明式导航,这样会破坏当前视图堆栈数据 下面的代码,如果点击声明式导航,将导致堆栈数据重置。...iPad 在 landscape 显示状态,默认即为此种模式 automatic 默认值,根据上下文自动调整外观样式 在 NavigationTitle 添加菜单 使用新 navigationTitle...相当一部分开发者由于版本适配原因并不会使用新 API ,因此,每个人都需要认真考虑如下问题: 如何从新 API 获得灵感 如何在老版本运用编程式导航思想 如何让新老版本程序都能享受系统提供便利...另一方面,新导航系统也每一个开发者传递了明确信号,苹果希望应用能够为 iPad 和 macOS 提供更加符合各自设备特点 UI 界面。

    10.3K62

    掌握 ViewThatFits

    首先,ViewThatFits 需要获取它所能使用空间,也就是其父视图给出建议尺寸。 判断顺序根据 ViewBuilder 闭包顺序,从上至逐个对子视图进行。...ViewThatFits 子视图查询其理想尺寸(根据未指定建议尺寸返回需求尺寸)。 根据受限轴设置,在选择受限轴上,比较子视图理想尺寸和 ViewThatFits 父视图给出建议尺寸。...它只在检查阶段使用子视图理想尺寸进行判断,在最终呈现阶段,它将子视图提交有值建议尺寸,并使用子视图需求尺寸作为自身需求尺寸。...理想尺寸( Ideal Size ) 在 SwiftUI ,相较于建议尺寸,很多开发者对理想尺寸接触较少,理解也不太深入。...在 SwiftUI ,我们可以通过 frame 来修改视图在理想状态呈现。

    20310

    掌握 Transaction,实现 SwiftUI 动画精准控制

    本文将通过探讨 Transaction 原理、作用、创建和分发逻辑等内容,告诉读者如何在 SwiftUI 实现更加精准动画控制,以及需要注意其他问题。...这是因为在上面的代码,没有为 SubView 外面的 VStack 声明“隐式动画”。因此,当 Rectangle 尺寸增大时,VStack 会调整布局。...使用显式动画屏蔽系统组件动画 在 iOS 17 SwiftUI 会让大多数系统组件( Sheet、FullScreeCover、NavigationStack、Inspector 等)在实现动画时...实现精准动画一些建议 在需要使用动画可动画组件附近声明“隐式动画”。 可能情况,使用新“隐式动画”声明方法。 在同样效果,优先使用“隐式动画”。...在需要情况,可以通过 TransactionKey 提供更丰富上下文信息 尽量不在一次状态改变修改过多属性。

    50720

    肘子 Swift 周报 #046| 无警告编译并非 Swift 6 初衷

    在这个过程,我首先尝试让自己构建第三方库在 Swift 6 模式实现完美编译。 这些库代码并不复杂,经过一番调整,大多数都能在 Swift 6 模式实现无警告编译。...作为书籍 macOS by Tutorials[7] 作者,Reichelt 尤其展示了很多在 WWDC 2023 和 WWDC 2024 macOS 引入 SwiftUI 新功能。...作者认为,经过多年发展,SwiftUI 逐渐统一了 Apple 各个平台代码,实现了跨平台代码高度共享,但开发者在开发过程仍需考虑不同平台特性,以确保应用用户体验与平台设计理念相一致。...他们详细演示了从设置项目到实现与浏览器交互整个过程,包括如何在 Xcode 配置 WebAssembly、使用 JavaScriptKit 库操作 DOM 以及利用 Swift Observation...更新:几个在 SwiftUI 中使用惰性容器技巧和注意事项[14] Fatbobman( 东坡肘子 )[15] 上周有网友反馈,当 List 子视图顶层结构类型为 _ConditionalContent

    10310

    Swift 周报 第十九期

    Apple 宣布 App Store 定价机制最重大升级,新增 700 个价格点 Apple 今日宣布对 App Store 进行问世至今最全面的定价机制升级,为开发者提供新增 700 个价格点和全新定价工具...建议解决方案: 添加一个新 @globalConstructor 属性,该属性可以添加到顶级函数,以便在启动可执行文件或加载包含该函数动态库时自动调用它们。...这在某些情况会增加新生成摩擦。 动机: 当前,在 macOS 上构建全新 Swift Package Manager 包时,构建目标是 2017 年 macOS 10.13。...建议解决方案: 我建议我们自动将 macOS 上生成新包最低支持版本添加到用户当前 macOS 版本。...它不但让我们参与到布局过程,而且也给了我们一个很好机会去更好理解布局在 SwiftUI 作用。 话题讨论 你如何看待各地疫情管控放开 欢迎在文末留言参与讨论。

    1.5K30

    Flutter 3.7更新详解

    只有在完整颜色方案才能展现出 Material 3 最完整细节,你可以使用新 Material 主题构建器 生成你主题配置,也可以通过 Flutter ThemeData 构造 colorSchemeSeed...DevTools 内存调试工具已经完成了一轮全面的调整。我们带来了三个新选项卡:Profile、Trace 和 Diff,它们包含了先前所有内存调试功能,也添加了更多利于调试操作。...性能页面也有一些值得注意新功能,该页面现在在顶部新增了 Frame Analysis (帧分析) 选项卡,它能够提供在 Flutter 详细追踪大量消耗某些帧和操作一些建议。...Flutter 并发开发指南 将 Flutter 添加到现有的 SwiftUI 应用 为 Flutter 创建多渠道 (针对 Android 和 iOS) 废弃 Bitcode 从 Xcode 14...此外,我们还修复了 Dart VM 报告 Flutter 引擎已经闲置 一处逻辑错误,也减少了 GC 带来的卡顿。

    3.2K00

    GeometryReader :好东西还是坏东西?

    在非滚动方向上,ScrollView 会子视图提供该维度上全部可用尺寸。而在滚动方向上,它子视图提供建议尺寸为 nil。...为此,我们首先需要理解 SwiftUI 布局原理。 SwiftUI 布局是一个协商过程。父视图子视图提供建议尺寸,子视图返回需求尺寸。...比如,对于 VStack ,它会在垂直维度上,分别向子视图发送具有明确值建议尺寸、未指定建议尺寸、最大建议尺寸以及最小建议尺寸信息,并获得子视图在不同建议尺寸需求尺寸。...在 SwiftUI 布局 —— 尺寸( )[11] 一文,我们探讨过有关尺寸“里子和面子”问题。...,因此在 WWDC 2023 ,苹果为 SwiftUI 添加了一个新 modifier:visualEffect[12]。

    63070

    用 Table 在 SwiftUI 创建表格

    欢迎大家在 Discord 频道[2] 中进行更多地交流 Table 是 SwiftUI 3.0 macOS 平台提供表格控件,开发者通过它可以快捷地创建可交互多列表格。...在 WWDC 2022 ,Table 被拓展到 iPadOS 平台,让其拥有了更大施展空间。本文将介绍 Table 用法、分析 Table 特点以及如何在其他平台上实现类似的功能。...如果数据量较小能够完整展示,开发者可以使用 scrollDisabled(true) 屏蔽内置滚动支持。 行高 在 macOS ,Table 行高是锁定。...: Bool) 仅用于 macOS,可以设置是否开启行交错背景,便于视觉区分 或许在之后测试版SwiftUI 会扩展更多样式到 iPadOS 平台 行选择 在 Table 启用行选择与 List...也许苹果是吸取了 Table DSL 教训,WWDC 2022 推出 SwiftUI Charts( 也是基于 result builder )在 Xcode 性能表现明显地好于 Table

    4.1K30

    Swift 周报 第十七期

    优化搜索功能,搜索功能可提供更准确、更完整搜寻结果,还能在你键入前就提供搜索建议。...多种智能共享方式,共享照片图库可以根据开始日期或照片中的人物,选取想要囊括内容来进行设置。完成后,你可以手动分享,也可以看看边栏里新“为共享图库推荐”,根据它智能建议将照片添加进来。...摘要: 在 iOS 16 引入 SwiftUI 图表,可以以直观视觉格式呈现数据,并且可以使用 SwiftUI 图表快速创建。...如何在 SwiftUI 创建条形图 摘要: 本文将展示如何创建一个垂直条形图,其中矩形高度将代表每个类别的值。...SwiftUI图表定制一个线图: https://github.com/SwiftCommunityRes/article-ios/blob/main/resource/16%20在iOS16SwiftUI

    2K10

    IOS Widget(1):概述

    引言   本系列文章作者是安卓开发,以安卓开发视角学习IOS小组件,记录一踩坑记录,如有讲得不对地方,路过大佬多包涵。如果你是想深入学习小组件,建议您顺着笔者编号顺序阅读本系列文章。...小组件概述 WidgetKit 通过在 iOS 主屏幕或 macOS 通知中心放置小组件,让用户可以随时访问 App 内容。Widget 可以保持更新,从而让用户获得最新信息。...当需要更多细节时,点击Widget 会直接带到 App 适当位置。 Widget 有三种不同尺寸(小号、中号和大号),可以对 Widget 进行个性化定制。...要实现一个 Widget,需要给应用添加一个 Widget 扩展并只能使用SwiftUI来实现 Widget 内容。...SwiftUI 小组件实现原理   要实现窗口小部件,您可以向应用程序添加窗口Widget Extensio。

    1.8K20

    Swift 周报 第四十二期

    SwiftUI 作用域动画 话题讨论: 那个活在记忆帅气少年,已慢慢变成了大叔模样。...总体而言,我们目标是在 Swift 引入更细致模式匹配,允许在不消耗值情况进行借用和变异,并探索这些增强功能在各种语言结构( switch 语句和条件)含义。...作为以前维护过基于 libSwiftPM 构建 CLI 工具,现在维护 SwiftPM 本身的人,我建议不要将其添加为依赖项。它不适合在一起版本化并随 Swift 工具链分发工具集之外使用。...提供示例和案例研究旨在展示案例关键路径多功能性和实用性,强调它们在简化代码、增强 SwiftUI 绑定、组合应用程序功能等方面的潜力。...SwiftUI 作用域动画[10] 摘要: 文章介绍了在 SwiftUI 中使用作用域动画新方法。首先,我们回顾了以前在 SwiftUI 处理动画方式,并指出了其中一些缺点。

    22110

    AnyView 对 SwiftUI 性能影响

    前言AnyView 是一种类型擦除视图,对于 SwiftUI 容器包含异构视图非常方便。在这些情况,你不需要指定视图层次结构中所有视图具体类型。...这是有道理,因为 SwiftUI 不知道它已经显示过此视图一次(因为它隐藏在 AnyView )。因此,它会再次绘制它,同时还可能缓存(但不使用)该视图旧版本。...当需要更新视图时,仅对其进行更改(例如,视图添加另一个反应)。有 AnyView当我们在这种情况使用 AnyView 时,事情就变得有趣了 - 在短时间内对屏幕上视图进行频繁更新。...由于 SwiftUI 不知道这个视图是什么,我假设它每次都会从头开始重绘。其中一些视图相当昂贵(例如 GIF),因此重新绘制可能是一项相当昂贵操作。...为了更好地理解结果,我们需要深入了解 SwiftUI 工作原理。在这个关于 SwiftUI 性能 WWDC 会话,来自 SwiftUI 团队 Raj 讨论了列表或表需要提前知道所有标识符。

    14200

    Apple Widget:下一个顶级流量入口?

    比如,早上起床,用户最关心天气怎么样,Widget 可以展示一天气情况;起床后,用户就要了解一一天行程,Widget 可以展示一 Reminders 内容;等到一天忙完了,准备睡觉时候,可以用...顾名思义,就是时间线,下面的图就是一条 Timeline。 ?...众所周知,SwiftUI 是一个去年才发布新技术,而且最开始时候 SwiftUI 是相当不稳定,以至于苹果自己都是建议开发者暂时不要用到生产环境上,Widget 作为系统主屏幕功能,强制使用这么新技术...SwiftUI 精美的 DSL 设计,使得开发者使用一套代码在 iOS、iPadOS、macOS、watchOS 和 tvOS 等多个平台展示不同样式可以轻松实现。...▐ 同一种 Widget 可以被多次添加到主屏幕 而且对于每一个 Widget 来说,都有其对应独立 TimeLine,相互独立,互不干扰。 ?

    1.9K20

    SwiftUI geometryGroup() 指南:从原理到实践

    在 WWDC 2023 ,苹果为 SwiftUI 添加了一个新修饰器:geometryGroup()。它可以解决一些之前无法处理或处理起来比较困难动画异常。...本文将介绍 geometryGroup() 概念、用法,以及在低版本 SwiftUI ,在不使用 geometryGroup() 情况如何处理异常。...以上面的示例来说,在添加了 geometryGroup() 后,父视图( frame )并不是一次性将自身几何属性改变状态传递给了子视图,而是将这些变化动画化了后,持续传递给子视图。...) 例如,在较低版本 SwiftUI ,我们可以修改上面的示例一代码,以避免出现非预期行为: struct TopLeadingTest2: View { let show: Bool...对于 iOS 16,在文字变化较多且较大情况,应尽量避免在父视图几何信息调整时切换文字内容。 总结 在本文中,我们深入探讨了 SwiftUI geometryGroup() 重要性和实用性。

    28910

    肘子 Swift 周报 | Swift,超越苹果生态!

    需要用开放心态和全新视角去学习和使用这些新工具。将采用新框架过程视为将项目更安全、更现代化方向重构绝佳机会。...文章不仅阐述了这一概念实现过程,还附带了一个完整演示,展现了如何在 SwiftUI 环境应用这一技术。...在转向 AppKit 过程,他探讨了一些鲜为人知 AppKit 组件, NSTableHeaderCell 等,并通过 NSViewRepresentable构建了 SwiftUI 与 AppKit...文章,作者强调他目的并非是要比较 SwiftUI 与 AppKit 性能优劣,或者质疑 SwiftUImacOS应用适用性。...实际上,该应用复杂模板编辑器几乎完全使用 SwiftUI 开发,且表现出色。这一点彰显了 SwiftUI 在实际应用强大潜力和灵活性。

    14610
    领券