Ios UICollectionView即使重新加载数据也不会重新加载搜索结果
我可以使用搜索功能过滤出搜索结果,但它不会在iPhone emulator上显示这些搜索结果。它会在我拥有的iPhone(iPhone 5)上显示结果,但不会在模拟器上显示。我不知道为什么在我键入时集合视图没有更新。阵列中的项目正在显示,因为我第一次导航到该屏幕时可以看到它们Ios UICollectionView即使重新加载数据也不会重新加载搜索结果,ios,swift,iphone,xcode,Ios,Swift,Iphone,Xcode,我可以使用搜索功能过滤出搜索结果,但它不会在iPhone emulator上显示这些搜索结果。它会在我拥有的iPhone(iPhone 5)上显示结果,但不会在模拟器上显示。我不知道为什么在我键入时集合视图没有更新。阵列中的项目正在显示,因为我第一次导航到该屏幕时可以看到它们 问题是您没有设置委托,因此不会调用搜索栏回调方法 如果使用SearchController,则需要将此行添加到viewDidLoad navigationItem.searchController?.searchBar.
问题是您没有设置委托,因此不会调用搜索栏回调方法 如果使用SearchController,则需要将此行添加到
viewDidLoad
navigationItem.searchController?.searchBar.delegate = self
否则,将searchBar委托设置为它
searchBar.delegate = self
注释:在CAMEL案例命名约定之后,您应该将<代码>数组> /COD>名称改为更为描述性的名称,如“代码> FieldDealEngs< /Calp>
”,命名一个属性“代码>数组非常令人困惑,因为它是SWIFT基础类型的名称。属性应该以小写字母(数组
)开头,但这也不是一个非常具有描述性的属性名称。类似地,过滤器块的参数应该是product
。在这段代码中不需要异步调度,因为您已经在主队列上了。您是否使用调试断点来查看发生了什么?是的,它正在正确地访问阵列,但我不确定它是否正确地将其过滤掉。当我在swift 3上运行它时,过滤器工作正常,但我刚刚将它升级为SWIFM 5,我遇到了这个问题。感谢您的回复!您在哪里设置搜索栏的代理?我在你发布的代码示例中没有看到这种情况。如果未设置代理,则不会触发textDidChange
。
searchBar.delegate = self