- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经实现了 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/
自动呈现 UISearchController 和自己呈现搜索 Controller 的行为不同。 @implementation MyViewComtroller // click search b
这就是我如何设置我的 UIsearchController private func setupSearchController() { let searchResultsController
我在导航项上使用 UISearchController(导航栏已设置为使用 barTintColor 和 twinColor)。当搜索 Controller 关闭(点击搜索栏的取消按钮)时,后退按钮的
我正在尝试创建与 iOS 8 中的联系人应用程序类似的体验。其主要组件是: 保持搜索栏固定在导航栏下方 在展示时将搜索栏附加到 View 顶部(标准功能)。 然而,这说起来容易做起来难。在与 tabl
当我将 UISearchController 的搜索栏中的占位符文本更新为比搜索栏更宽的内容时,搜索图标会发生这种情况: 我通过在 viewDidLoad 中调用以下方法添加了 UISearchCon
我在学习 UISearchController通过关注 this教程。然而,UISearchBar未显示。这是我的代码: let searchController = UISearchControll
我正在使用 UISearchController 在我的表格 View 中搜索数据。我没有使用 TableView Controller 。我想在搜索栏处于事件状态时隐藏导航栏,因此我将 self.s
在我的项目中,我使用了 UITableViewController带有内部 UISearchController过滤我的 tableView 中的数据. 我过滤数据没有问题,但我需要确定我的 tabl
我目前正在将 iPad 应用程序中的所有 View Controller 迁移为使用 iOS 11 标准 searchController(在导航项上)。问题是当它作为表单在 iPad 上显示时,搜索
我在 UITableView 的标题中使用 UISearchController 的 UISearchBar。我的搜索工作正常,因为当我在搜索栏的字段中输入一些文本时,所有相关方法都会被调用,并且表格
我以编程方式创建了一个 searchBar 并将其添加到导航栏平铺 View 中。这是我的代码: UISearchController *searchController = [[UISearchC
在 UISearchDisplayController在 viewWillAppear: 中有一种方法可以在没有动画的情况下将其设置为事件状态方法,因此 View Controller 将推送已激活的
我正在向现有应用程序添加搜索栏。 我有一个表,其中填充了从服务器下载的数据,并且我正在使用新的 UISearchController。 我现在让搜索栏完全正常工作,并在用户输入搜索栏时显示一个新的过滤
我以编程方式将UISearchController添加到UIViewController中,当加载UIViewController时一切都很好,但是当我触摸UISearchBar时在UISearchC
我正在尝试发送搜索电影的请求,但是当我点击搜索栏写入文本时,我在 cellforrow 中崩溃,并且它没有调用 numberofrows 也没有调用请求。这是我到目前为止的代码: class InTh
我在 UITableViewController 上添加了一个搜索栏,但每次单击搜索栏时都会收到错误。 View 也变黑了.. 警告:尝试在 FindViewController 上呈现 OWSear
我在我的应用程序中使用 UISearchController,如下 this教程: 现在已经设置了自定义UITableViewCell。 UISearchController 弄乱了我的单元格。 看起
据我了解,UISearchController 的默认行为是: 点击搜索栏时,背景会变暗并显示“取消”按钮。 SearchResultsController 直到此时才显示。 SearchResult
我将 UISearchController searchBar 添加到 Controller 的 View 中,如下所示:self.view.addSubview(searchController.s
class PlaceSelectorViewController: UIViewController, GMSAutocompleteResultsViewControllerDelegate, U
我是一名优秀的程序员,十分优秀!