在表格视图中实现搜索栏

Posted

技术标签:

【中文标题】在表格视图中实现搜索栏【英文标题】:Implementing a Search Bar in a Table View 【发布时间】:2015-10-17 10:55:10 【问题描述】:

我目前正在学习 ios 开发。不幸的是,我注册的课程是基于 iOS 7 的,似乎没有任何支持。但是,我有 Xcode 7,并且非常坚持尝试。我一直在寻找有关如何解决“searchDisplayController”弃用问题的答案,虽然那里有信息,但作为 Objective-C 的新手,我还没有弄清楚如何解决我的问题。

我有一个非常基本的 TableView 应用程序,它只是在 TableView 中显示一年中的月份。我已将“搜索栏和搜索显示控制器”添加到 TableView。这是我的代码的第一部分,Xcode 告诉我在 'TableViewController.m' 中不推荐使用 'searchDisplayController':

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

    // Return the number of rows in the section.
    if (tableView == self.searchDisplayController.searchResultsTableView) 
        return [_filteredResults count];
    
    else 
       return [_monthsOfTheYear count];
    

如果有人可以让我知道我需要做什么或向我指出可以帮助我理解它的教程,我将不胜感激。

谢谢!

【问题讨论】:

如果人们花时间阅读您的问题,最好发布反馈。 【参考方案1】:

您正在寻找UISearchController。为此,您可以通过Apple Documentation。这是一个good tutorial。你也可以看看这个SO post。 this video 也会添加到您的知识库中。

【讨论】:

我已经浏览了您发布的所有这些教程和链接,但我仍然无法理解它。我还需要使用 Objective-C 进行编程,所以不幸的是 Swift 视频没有帮助。我是否需要将“UISearchController”添加到我的头文件中,即在我的代码中,我目前有:“@interface TableViewController : UITableViewController” - 所以我需要在这里添加 UISearchController 吗?【参考方案2】:

UISearchController 替换 UISearchDisplayController。 Here is a tutorial re: 怎么用。

【讨论】:

【参考方案3】:

添加此属性

let searchController = UISearchController(searchResultsController: nil) 

并在您的 viewDidLoad 中添加此代码

searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
yourTableView.tableHeaderView = searchController.searchBar
yourTableView.contentOffset = CGPoint(x: 0, y: searchController.searchBar.frame.height)

更多详情请查看tutorial for swift 和this tutorial

【讨论】:

以上是关于在表格视图中实现搜索栏的主要内容,如果未能解决你的问题,请参考以下文章

表格视图的搜索栏

如何在导航栏下隐藏搜索栏并在用户下拉表格视图时显示它?

如何使搜索栏不与表格视图一起滚动? [复制]

在搜索栏处于活动状态时删除表格视图中的单元格 - CoreData 错误

在表格视图中放置搜索栏。选择结果给出错误的详细视图?

独立的搜索栏和表格视图控制器