问题标签 [uisearchresultscontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
swift - 表格视图标题上的奇怪 UISearchController 行为
这是我之前做过的事情,效果很好,所以我很困惑为什么它现在不能正常工作。
我想要做的是在我的表格视图的标题中有一个搜索栏,当它变得活跃时它不会移动。我已经使用相同的tableView.tableHeaderView
方法在另一个视图中实现了这一点(两者之间的一个区别是工作searchController
是TableViewController
嵌入在 a 中NavigationController
而不是在带有表的常规ViewController
中)。
我会马上进入代码,这里是图片。
不正确的行为:搜索前
搜索后
正如你所看到的,在第二张图片中,当它searchController
变得活跃时,它会跳到视图的顶部,而不是停留在headerView
我认为应该的状态。它还tableView
在标题所在的顶部留下了一个非常难看的间隙。大约一年前,我制作了我的应用程序的早期版本,该屏幕上的搜索功能运行良好,并且使用该项目中相同的完全相同的代码仍然会导致这种奇怪的行为,searchController
即tableView
.
就我的代码而言,我已经使我的类符合UISearchResultsUpdating
并实现了所需的updateSearchResults(for:)
功能。
我在课堂上声明了我的变量:
然后在我的 中viewDidLoad
,我执行以下操作:
这与在我的另一个中工作的代码相同viewController
(当然,另一个是a tableViewController
,但我也@IBOutlet
为tableView
那里制作了一个并将 附加searchController
到tableHeaderView
)。可能值得一提的是,顶部的那些单选按钮会触发我tableView
显示不同的数组。在我的应用程序的旧版本中,它真的很酷,因为在它们searchController
处于活动状态时切换这些单选按钮会自动显示每个数组的搜索结果。
我在这里错过了一些非常明显的东西吗?
objective-c - 以编程方式重置 UISearchController 中的搜索查询字符串
我无法以编程方式重置/替换搜索查询字符串。我试图从 UISearchControllerDelegate 中修改 UISearchBar 查询字符串。
我正在使用听写输入。
当命令“删除”时,searchController.searchBar.text
应该设置回@""
. 语音检测应继续使用空字符串正常进行。
查询字符串确实重置为@""
,但语音检测停止。
如何以编程方式重置 UISearchController 中的搜索查询字符串,并且仍然能够使用语音继续输入?
swift - SearchResultsController 出现在 UINavigationBar
我想有一个单独的 viewController 作为 searchResultsController 但是,我得到了如下所示的异常行为。
我正在这样设置 searchController;
当我添加:
我得到:
出于说明目的,我已将 searchResultsController 视图颜色设置为具有低 alpha 的 .green。
如您所见,searchResultsController 与导航栏重叠。
现在当我设置:
我在下面得到了想要的结果:
对此有什么解释吗。显然问题在于将 searchResultsController SearchBar 设置为 navigationItem TextView。
swift - 如何将 searchController 与 searchResultsController 一起使用?
我创建了一个搜索控制器并向其中添加了一个 searchResultsController。
MainController.swift
我的搜索逻辑在 updateSearchResults 方法中工作,每次进行搜索时都会触发。这当然是由 UISearchResultsUpdating 协议提供的。这里我将我要查找的列表添加到 SearchResultVC 中的 tableView 的数据中并重新加载 tableView。
MainController.swift
最后,我将在新打开的 searchViewController 中显示我的数据。
SearchResultVC.swift
我的问题是无法重新加载。reload() 所在的分区没有被触发。此外,新打开的页面也self.searchTableView.delegate = self
崩溃self.searchTableView.dataSource = self
了。
如何vcTableView.reloadData()
正确触发?
编辑