gpt4 book ai didi

ios - 在 UINavigationBar 上呈现 UISearchController 时推送 View Controller

转载 作者:可可西里 更新时间:2023-11-01 06:13:47 26 4
gpt4 key购买 nike

我已经实现了 UISearchController,因此在点击搜索图标时它会出现在 UINavigationBar 之上。过滤表格后,用户应该能够选择将推送新 View Controller 的行。问题在于这样做时,搜索 Controller 仍显示在导航栏上方。

我对此进行了研究,建议您将 self.definedPresentationContext 设置为 true。当搜索栏显示在导航栏上方时,这不起作用。当您点击搜索图标时,键盘会出现,但搜索栏不会出现动画。

我发现的另一个选项是通过将 active 设置为 false 来关闭 viewWillDisappear 中的搜索 Controller 。这个解决方案的问题是它在推送转换期间动画化了。当您向后导航时,搜索显然不再有效,因此用户失去了搜索上下文并显示了所有结果。

我想知道如何推送 View Controller ,保持搜索处于事件状态,但不显示下一个 View Controller 上方的搜索界面。理想情况下,搜索界面会随着新的 View Controller 被推向左侧,并在滑动返回搜索结果时返回。

我调整了 Apple 的 UIKit Catalog 示例代码以显示不良行为。要重现该问题,download this project ,在 iPhone 上运行它,点击后退按钮,选择搜索,选择在导航栏上显示,点击搜索图标,输入搜索词,然后选择结果。请注意,搜索栏仍然可见。以下是来自 SearchPresentOverNavigationBarViewController.swift 的代码:

override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)

if searchController.active {
//searchController.active = false //undesirably dismisses search, animates away during push, upon going back search is not active
}
}

@IBAction func searchButtonClicked(button: UIBarButtonItem) {
//self.definesPresentationContext = true //causes the search to not appear

searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false

presentViewController(searchController, animated: true, completion: nil)
}

最佳答案

我来晚了一点,但我最近发现自己处于类似情况并想分享我的经验。

假设您展示了您的搜索界面,用户在搜索字段中输入了一些内容,您向他们展示了一些结果。选择结果后,我将新的 View Controller 推送到原始导航 Controller ,即包含呈现搜索界面的 View Controller 的导航 Controller 。当我这样做时,搜索界面会被推到左侧,当您点击后退按钮时,搜索界面会返回并保留其状态(查询和结果)。

我应该提到,在包含可搜索内容的 Controller 中,即显示搜索界面的 Controller 中,我启用了显示上下文。

此外,我的搜索栏集成在显示搜索内容的 TableView 的标题 View 中,因此我没有明确显示搜索界面 - 当用户在搜索字段内点击时,它会自动上升并推送导航栏移出屏幕。这是我能想到的我们设置的唯一区别。无论如何,希望这对你有帮助。干杯!

关于ios - 在 UINavigationBar 上呈现 UISearchController 时推送 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36944002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com