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

SwiftUI有没有一个可以通过输入来过滤一个大列表的选取器?

是的,SwiftUI提供了一个可以通过输入来过滤一个大列表的选取器。你可以使用SearchBar结合List来实现这个功能。

首先,你需要创建一个@State属性来存储用户输入的搜索关键字。然后,你可以在界面上添加一个SearchBar,并将搜索关键字绑定到@State属性上。

接下来,你可以使用filter()方法来根据用户输入的关键字过滤列表数据。将过滤后的数据作为ForEach的数据源,然后在循环中创建列表项。

下面是一个示例代码:

代码语言:txt
复制
struct ContentView: View {
    @State private var searchText = ""
    
    let items = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
    
    var filteredItems: [String] {
        if searchText.isEmpty {
            return items
        } else {
            return items.filter { $0.localizedCaseInsensitiveContains(searchText) }
        }
    }
    
    var body: some View {
        VStack {
            SearchBar(text: $searchText)
            
            List(filteredItems, id: \.self) { item in
                Text(item)
            }
        }
    }
}

在这个示例中,items是一个包含所有列表项的数组。filteredItems是根据搜索关键字过滤后的数组。

SearchBar是一个自定义的搜索栏组件,你可以在SwiftUI中自己实现,或者使用第三方库。它接受一个@Binding类型的参数,用于绑定搜索关键字。

这样,用户在搜索栏中输入关键字时,列表会根据关键字自动更新并显示匹配的项。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,我无法提供相关链接。但你可以通过访问腾讯云官方网站,了解他们提供的云计算服务和相关产品。

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

相关·内容

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

阅读 SwiftUI TextField 进阶 —— 格式与校验[14] 文了解其他验证手段,以及如何通过 onChange 实现近乎实时地限制输入字符方法。...SwiftUI 当前缺乏动画完成后回调机制。在动画不复杂情况下,可以通过创建一个符合 Animatable 协议 ViewModifier 同步观察动画进程。...其中 2 个是自定义形状( 基本上是圆角矩形,只有两个角是圆 ),其中一个是矩形。编译抛出一个错误,说它花了太多时间检查视图类型。...A:你可以通过创建自定义 ViewModifier 封装其中些代码。...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[23],可以及时获得每周 Tips 汇总。

14.8K30

在 Text 中实现基于关键字搜索和定位

transcription 中结果值已经为高亮显示值( 当前选择高亮位置 ),且下一个序号位置仍在同一个 transcription 中,那么将放弃滚动。...如果当前显示 transcription 无法满足条件,才会定位到第一个满足条件结果位置。...阅读 掌握 SwiftUI Safe Area[11] 文,了解更多有关 safeAreaInset 修饰内容safeArea_2022-08-22_18.24.59.2022-08-22 18...我们需要采用如下方式避免因此而导致应用卡顿:确保搜索操作运行于后台线程过滤关键字响应,避免因为输入太快导致无效搜索操作我们通常会在 Combine 中采用 .subscribe(on: ) 设定之后...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅 邮件列表[14],可以及时获得每周 Tips 汇总。

4.2K30

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

假设我们想创建一个类似于 iMessage 视图,在那里你可以看到一个信息列表(与本例无关),在视图底部有一个文本框。当用户点击文本字段时,键盘会在其工具栏中出现一个文本字段。...但是从一个文本字段到下一个文本字段聚焦感觉不够流畅,而且每当我在一个文本字段中输入一个字母时,我 CPU 使用率似乎会飙升到 70% — 100%。...在构造函数中初始化 @StateObjectQ:是否有办法在视图中用该视图结构参数初始化一个 @StateObject ?A:可以通过在 init 方法中手动初始化 @StateObject 实现。...顺便提下,试图通过底层存储初始化 @State 是我们在过去警告过事情。...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[25],可以及时获得每周 Tips 汇总。

12.2K20

Ask Apple 2022 中与 Core Data 有关问答 (下)

通过创建两个单独属性,一个包含纯文本字符串,另一个包含属性字符串 Transformable 数据是否为最好方法?是否有另种更好方式可以通过两个属性减少存储数据量?...筛选关系数据Q:我发现在 SwiftUI 中使用 @FetchRequest 是将用户界面与 Core Data 数据绑定很好手段。然而,在使用关系获得同样无缝绑定时,我碰到了一个小问题。...我方法有什么问题?A:这听起来与另一个问题相似,我在这个问题中建议使用谓词来过滤只具有某种关系对象。我想同样方法应该对你有用?...让 Core Data 通过构建一个谓词完成过滤工作会更快,比如 NSPredicate(format: "country = %@", country)。...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[11],可以及时获得每周 Tips 汇总。

3.2K20

SwiftUI 中实现视图居中若干种方法

欢迎大家在 Discord 频道[2] 中进行更多地交流将某个视图在父视图中居中显示是一个常见需求,即使对于 SwiftUI 初学者来说这也并非难事。...Text 中心点与给定位置进行对齐( postion 是一个通过 CGPoint 对齐中心点视图修饰 )当然,你也可以获取 Text Geometry 信息,通过 offset 或 padding...不过除非矩形尺寸明确,否则里外都需要使用 GeometryReader ,实现将过于烦琐。总结本文选取些有代表性解决方法,随着 SwiftUI 功能不断增强,会有越来越多手段可供使用。...我为本文这种通过多种方法解决一个问题方式添加了【小题大作】标签,目前使用该便签文章还有:在 Core Data 中查询和使用 count 若干方法[6]、在 SwiftUI 视图中打开 URL...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[10],可以及时获得每周 Tips 汇总。

6.7K40

StateObject 与 ObservedObject

下文中将详细探讨其中原因。原理ARCSwift 使用自动引用计数( ARC )跟踪和管理引用类型实例内存使用情况。只要还有一个对类实例强引用存在,ARC 便不会释放该实例占用内存。...描述、实例与视图SwiftUI一个声明式框架,开发者用代码声明( 描述 )想要 UI 呈现。...请阅读 [SwiftUI 视图生命周期研究](SwiftUI 视图生命周期研究 "SwiftUI 视图生命周期研究") 文,了解更多有关视图与实例之间关系属性包装Swift 属性包装(...通过从父视图传递一个可以保证存续期长于当前视图存续期可观察对象,从而避免不可控情况发生避免创建 @StateObject var testObject:TestObject 这样代码与 @ObservedObject...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[7],可以及时获得每周 Tips 汇总。

2.4K20

Xcode 11 初体验

Editor Options 通过Editor Options可以设置当前编辑显示模式,包含:Editor Only, Editor and Canvas, Editor and Assistant...按住 Option 按键点击它,会纵向分割, 下图是一个分割后界面示例 上图中界面被分成了 3 个编辑窗口。左边被上下分割成了两个小窗口,右边被单独分割出一个大窗口。...除此之外你还可以移动鼠标到两个窗口之间,将要打开文件在这里插入一个窗口: 综合这个功能,更加方便我们对比阅读,快速开发!...当你项目关联了版本控制工具时,比如 Git, Xcode 会检测出当前文件哪些地方相对于上次递交版本有更改,并且会通过在左边显示一个蓝色线条标记出来: Change Bar 点击左键还可以选择 show...Stash Changes 选择 Stash Changes 选项,会自动弹出一个对话框,提示我们输入些Comment 信息。点击Stash 按钮自动跳转到Git管理Tab 下。

3.2K10

老人新兵 —— 款 iOS APP 开发手记

SwiftUI 给我创建了一个非常高效环境,在短时间内便可以将整个 app 原型跑起来,但当真正地将具体实现以及数据流完全串联起来时才发现切并不那么简单。...TabViewSwiftUi 中 TabView 本来是一个很方便控件,寥寥几句代码便可完成一个标准屏幕底部页面切换功能,不过它有几个问题:item 版式控制力差,这个还是可以接受可以通过些手段调整...这也是目前 SwiftUI 中控件显示设定一个问题( 主要是官方并不推荐和支持这样行为 ),各个 view 中如果通过 UIKit 修改设定的话,之间不隔离。...应用内购买技术上并不复杂,因为我并不需要自设服务二度认证,所以逻辑上就简单了很多。唯就是苹果在购买完成后最初完成反馈其实并不能保证用户已经付款,所以需要在后台查询确保已付款成功。...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[3],可以及时获得每周 Tips 汇总。

2.5K40

SwiftUI数据流之State&Binding

@State检测是值类型 值类型仅有独立拥有者,而class类型可以多个指向一个;对于两个SwiftUI View而言,即使发送给他们两个相同struct对象,事实上他们每个View都得到了份独立...{ Text(product.title) } } } } } 这个例子展示了一个过滤开关列表...source of truth),所以列表中展示内容会不断根据条件进行过滤 可变和不可变 首先来使用下面示例探讨一个问题 struct StateMutableView: View { @State...,anotherFlag是没有使用属性包装普通变量,同时增加了一个mutating方法changeAnotherFlag被设计修改anotherFlag; 在body中通过几种方式对两个变量进行修改...计算属性setter 在setter属性中,self默认是mutating,可以被修改;我们不能给一个不可变量赋值,可以通过声明setter nonmutating使属性可赋值,这个nonmutating

4K30

iBug 16 有感

由于在 SwiftUI 4 中,Lazy 容器表现出现了与以往较大差异,因此已完成大半 《 使用 Lazy 容器注意事项 》文将暂时搁置,待情况稳定时再更新访问我博客 www.fatbobman.com...[1] 可以获得更好阅读体验以及最新更新内容。...Bug 众多现象不仅仅表现在 SwiftUI 上,在 iOS、macOS 以及苹果很多其他产品上都有所体现。这绝非苹果独有的问题,整个社会目前都处在种浮躁发展轨迹中。...方面表明,苹果开发管理出现了明显问题,另方面,也间接地证明了 SwiftUI 4 重写了大量底层代码,待这些代码稳定后,可能会有不错结果( 也许是更多 Bug )我们真的需要走得这么快吗?...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[5],可以及时获得每周 Tips 汇总。

83320

解析SwiftUI布局细节(三)地图基本操作

通过这篇文章我们能总结到点有下面几点: 1、SwiftUI怎样使用UIKit控件 2、网络请求到数据我们怎样刷新页面(模拟) 3、顺便总结下系统地图些基本使用...(点击地图位置会获取经纬度,反地理编译得到具体位置信息,显示在列表中) SwiftUI怎样使用UIKit控件 ---- 我们总结下,SwiftUI怎么使用UIKit控件,中间连接就是...,第一个方法就像一个初始化方法,返回就是你SwiftUI想用UIKit控件对象。...接下来还有点,我们既然点击地图之后需要给我们点击位置添加一个大头针并且去获取这个点经纬度,那我们首先第步就是必须得给地图添加一个单击手势,具体我们怎么做呢?...网络请求到数据我们怎样刷新页面(模拟) ---- 关于刷新数据这个是比较简单,用到就是我们前面提绑定数据模式,这点真和Rx挺像,你创建了一个列表,然后给列表绑定了一个数组数据源,

2.1K10

如何结合 Core Data 和 SwiftUI

我们需要确保该获取请求随着时间推移保持最新,以便在创建或删除学生时,我们 UI 保持同步。 SwiftUI一个解决方案,而且——您猜对了——这是另一个属性包装。...从那里开始,我们可以像常规 Swift 数组样开始使用学生,但是您会发现有一个陷阱。...为了解决这个问题,我们将在列表下方创建一个按钮,每次点击都会添加一个随机学生,但是首先我们需要一个新属性存储托管对象上下文。 让我重申下,因为这很重要。...为了帮助学生脱颖而出,我们将通过创建firstNames和lastNames数组分配随机名称,然后使用randomElement()从中选择一个。...这是一个引发函数调用,因为理论上它可能会失败。实际上,我们所做切都没有失败可能,因此我们可以使用try?调用它——–我们不在乎捕获错误。 因此,请将最后行添加到按钮操作中: try?

11.8K30

些适合 SwiftUI 初学者教程

在他网站 Hacking with Swift 中,提供了大量优秀免费内容。100 Days of SwiftUI[4] 便是面向 SwiftUI 初学者一个合集。...Raywenderlich SwiftUI Apprentice[8] 书是针对初学者撰写,全书前三分之部分可以免费阅读。...SwiftUI 推广也算尽心尽力,它史无前例地为 SwiftUI 创建了一个十分 精美的教程[10]( 创建该教程技术最终演变为 DocC[11] )。...该教程提供了保姆级提示能力,可以为开发者展示开发过程中一个步骤。比较遗憾是,尽管该教程制作得十分精良,但调性过于高冷,代入感不强。...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[17],可以及时获得每周 Tips 汇总。

1.9K21

如何判断 ScrollView、List 是否正在滚动中

isScrolling_2022-09-12_10.26.06.2022-09-12 10_28_09方法:Introspect可在 此处[4] 获取本节代码在 UIKit( AppKit )中,开发者可以通过...因此,我们可以通过访问其背后 UIKit 控件方式( 使用 Introspect[5] )实现本文需求。...时候,直到我碰到 Timer 闭包并没有按照预期被调用时才对其进行了了解Runloop 是一个事件处理循环。...模式,因此无法有效地区分滚动是由那个控件造成方法三:PreferenceKey在 SwiftUI 中,子视图可以通过 preference 视图修饰向其祖先视图传递信息( PreferenceKey...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[9],可以及时获得每周 Tips 汇总。

3.7K40

架构之路 (五) —— VIPER架构模式(

使用这种方法,你在storyboard中定义View,Controller是一个关联UIViewController子类。控制Controller修改视图,接受用户输入并直接与模型交互。...该模型使用一个JSON文件实现本地持久性,但是您可以使用一个远程后端来代替它,而不必修改任何ui级代码。这就是干净体系结构优点之:当您更改一个部分(比如持久层)时,它与代码其他部分是隔离。...通过使用@Published属性包装声明它,视图将能够监听属性变化并自动更新自身。 下步是将此列表与来自interactor数据模型同步。...第一个只是interactor路点列表一个副本。第二个使用mapInfoProvider计算所有路径点总距离。第三种方法使用相同数据provider获得路点之间方向。...但是要创建一个waypoint,您需要一个新视图,以便用户输入名称。 为了得到一个视图,你需要一个Router。创建一个名为TripDetailRouter.swift新Swift文件。

17.4K10

百行代码变十行,苹果SwiftUI可视化编程让开发者惊呼完美

SwiftUI 使用统套工具和 API,即可创建在任意苹果设备使用用户界面。通过定义一个易读易写声明式 Swift 语法,SwiftUI 可以顺畅和 Xcode 工具起完成设计工作。...例如,开发者可以声明需要由串文本输入框构成组件,然后定义每一个输入字体对齐方式、字体样式、字体颜色。这些代码比以往更加易懂,省时并易于维护。...如上所示为 SwiftUI 代码与预览部分,它们之间是可以实时交互。总体而言,这种新型工具主要有以下三大特点: 拖拽:通过简单拖拽 Canvas 上控件排列用户界面上各种组件。...预览:现在,我们可以创建任何 SwiftUI 视图一个或多个预览,从而得到样本数据,并配置几乎用户能看到所有内容,例如大字体、定位或「暗黑模式」等。...Swift 包管理和 Github 包列表协作可以帮助开发者更容易发布自己 Swift 项目。 使移动端开发者有更高效生产力工具也十分重要。

4K10

肘子 Swift 周报 #019 | 超越代码,拥抱思维转变

这种做法严重削弱了框架转换带来结构和思维转变机会,这是一个巨大遗憾。 SwiftUI 自发布以来已五年,尽管发展速度并不算快,但苹果公司已经逐步向开发者们提供了套更为全面的现代化编程框架。...前期内容|全部周报列表 原创 探讨 SwiftUI属性包装:@UIApplicationDelegateAdaptor、@AccessibilityFocusState、@FocusedObject...这些属性包装涵盖了不同框架声明周期整合、辅助聚焦、焦点值观察管理等功能。 Swift 语言属性包装SwiftUI 诞生于同年。...文章进步讨论了通过采纳某些策略,如使用 final 关键字、方法私有化以及全模块优化等,降低动态派发频率,从而有效提升 Swift 代码运行效率。...他强调,通过封装和泛化对第三方库引用,可以避免代码与特定库过于紧密绑定,这种紧密绑定会在更换库或调整功能时引入不必要复杂性和额外工作。

9310

全新Swift从入门到进阶实战探探iOS APP

这意味着你将编写一个不工作测试(红色),然后使其通过(绿色),最后通过重构简化代码。这个过程有助于保持代码清晰度和简洁性。设计有机地发展:在决策过程中,使用运行中代码提供反馈14。...文本输入密集型应用:同样地,考虑到SwiftUI在处理多个填充文本字段方面的高效性18,它可以被广泛应用于需要用户频繁输入文本应用程序中。...这些应用程序可能包括社交媒体平台、博客编辑或任何需要用户输入大量文本内容服务。...通过学习和应用这些知识,开发者可以更好地利用Swift和UIKit功能来创建高效、响应式用户界面。此外,AF4iOS框架提出提供了一个基于类库和现有软件框架iOS应用开发框架20。...为了进步提高UI设计质量和效率,开发者可以考虑使用静态分析工具(如SonarQube和Codacy)评估和改进他们SwiftUI项目19。

26910

SwiftUI 中创建自适应程序化导航方案

与 UIKit 使用命令式导航方式不同,SwiftUI 作为一个声明式框架,感知与设置两者之间是二位关系。读取状态即可获知当前导航位置,更改状态便可调整导航路径。...不过仅有在前两列中通过 List(selection:) 修改状态时,才能在自动转换 NavigationStack 表现形式中具备程序化导航能力。方案对此有进说明。...不过我们可以通过使用另一个 navigationDestination(isPresented:) 修饰达到类似的目的。...本着“议”原则,当前方案可以实现对任意导航逻辑进行转换。总结可以在 此处[5] 获取本文全部代码。次编写便可对应多种设备,这本就是 SwiftUI 一个重要特点。...每周也会对当周博客上新文章以及在 Twitter 上发布 Tips 进行汇总,并通过邮件列表形式发送给订阅者。订阅下方 邮件列表[8],可以及时获得每周 Tips 汇总。

4.2K30

SwiftUI内容边距

今天,我们将了解 SwiftUI 引入新内容边距概念以及它与安全区域区别。创建示例让我们从一个简单示例开始,演示带有一百个项目的列表。...另一个选项是 scrollIndicators,它仅移动指示。...可运行 Demo提供一个基于提供代码片段简化版本Swift Playground示例,用于演示如何使用contentMargins视图修饰符管理内容边距。...你可以在 Playground 中运行此代码以查看结果。总结本文介绍了 SwiftUI内容边距管理,通过对比安全区域概念,解释了内容边距重要性。...最后,引入了 contentMargins 视图修饰符,并详细解释了其用法和参数,以及如何使用它管理内容边距。通过本文,读者可以更好地理解并掌握 SwiftUI 中内容边距管理技巧。

15232
领券