搜索栏返回按钮
Posted
技术标签:
【中文标题】搜索栏返回按钮【英文标题】:Search Bar return Button 【发布时间】:2016-01-20 11:09:50 【问题描述】:我在 tableview 中有一个 searchBar,在 .csv 文件 (coredata) 中搜索结果。 列表很大,因此用户必须在第一次搜索后向上滚动多次才能到达搜索栏,或者在索引栏中选择“A”字母。 当用户想要回到列表的开头时,有没有办法在 NavigationBar 中添加一个按钮来显示 searchBar?提前致谢。
searchController = UISearchController(searchResultsController: nil)
tableView.tableHeaderView = searchController.searchBar
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String?
return sectionTitles[section]
override func numberOfSectionsInTableView(tableView: UITableView) -> Int
//assume a single section after a search
return (searchController.active) ? 1 : sectionTitles.count
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
if searchController.active
return searchResults.count
else
// Return the number of rows in the section.
let wordKey = sectionTitles[section]
if let items = cockpitDict[wordKey]
return items.count
return 0
【问题讨论】:
【参考方案1】:我不知道如何将用户直接发送到搜索栏,但总有其他方法可以做,你可以做的是:重新加载故事板,然后它会再次显示初始搜索栏状态。看看这个有趣的帖子:How do I perform an auto-segue in Xcode 6 using Swift? 也许你可以去另一个 VC 并立即返回一个简单的动画,这样用户就不会注意到这个骗子。 :)
【讨论】:
我没想到这是个好主意....我去看看,谢谢 Eddie....... 效果很好,我可以设置一个图像来做出不同的东西。谢谢【参考方案2】:是的,you can add a UIBarButtonItem to your navigation bar 你所做的操作将在哪里scroll the table back to the top。
【讨论】:
@Michael Dautermann 我用一些代码编辑了我的问题。它与您提供的代码链接不同,对我有帮助吗?谢谢【参考方案3】:只需将代码从 tableView.tableHeaderView = searchController.searchBar
替换为 navigationItem.titleView = searchController.searchBar
即可在 NavigationBar 上显示 searchBar。
但是当您选择 searchBar 时,它会向上移动并且可能在屏幕上不可见,因此您可以使用UISearchBar
而不是UISearchController
。有关更多信息,请查看这些thread。
【讨论】:
是的,搜索栏消失了,我想找回它但无法。你是什么意思改变 UISearchBar.... 你能给我这条线吗?谢谢:) 你查看我分享的链接了吗? @RamkrishnaSharma 是的,我做到了,但它不是 Swift。你知道我怎样才能使用上面的代码找回 searchBar 吗? @Manolo :很快,请再次检查。关于取回 searchBar,您是在实现 UISearchBar 还是 UISearchController 请告诉我,以便我可以帮助您。 @Manolo 你能去这个聊天室吗? chat.***.com/rooms/102335/searchbarproblem【参考方案4】:这并不完全是您问题的答案,但仍然是您快速返回表格视图顶部问题的解决方案。您可以覆盖表视图的scrollsToTop:
-property 以返回YES
。通过这样做,您将允许用户通过简单地点击状态栏来跳转到表格的顶部。这是许多常用应用程序的标准行为,例如通讯录、邮件、Safari 和照片。
请注意,屏幕上只有一个滚动视图/表格视图/集合视图可能会返回YES
以实现此行为。在多个滚动视图的情况下,您可以选择实现UIScrollViewDelegate
-protocol's
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
回调并动态检查给定的滚动视图是否应该响应点击。
虽然这是 Objective-C 的方式,但我想你应该能够将这个概念转移到 Swift 上。
这种方法有两个优点:
您不会弄乱您的导航栏。苹果ios Human Interface Guidelines明确建议
避免在导航栏上挤满额外的控件,即使它看起来有足够的空间。一般来说,导航栏不应包含视图的当前标题、后退按钮和一个管理视图内容的控件。
您将与操作系统的标准行为保持一致。
【讨论】:
以上是关于搜索栏返回按钮的主要内容,如果未能解决你的问题,请参考以下文章