如何正确配置添加到现有表视图控制器的搜索栏?

Posted

技术标签:

【中文标题】如何正确配置添加到现有表视图控制器的搜索栏?【英文标题】:How to correctly configure a Search Bar added to an existing Table View Controller? 【发布时间】:2016-07-01 08:39:41 【问题描述】:

我已经创建了一个我很满意的表视图控制器,现在想向它添加一个搜索视图。我已经使用情节提要添加了“搜索栏和搜索显示控制器”,并尝试按照许多教程来添加搜索栏,但现在似乎所有这些都已弃用。我不想以编程方式添加搜索,因为我希望它位于情节提要上的特定位置,而不是屏幕顶部。

问题是根本没有调用 updateSearchResultsForSearchController。我已经中断了这个函数来确认这一点。

我有以下代码:

class ViewItemTableViewController: UITableViewController, UIPickerViewDelegate, UIPickerViewDataSource, UISearchBarDelegate, UISearchDisplayDelegate 

// lots of other unrelated things

@IBOutlet weak var searchBar: UISearchBar!

    func updateSearchResultsForSearchController(searchController: UISearchController)
           
        listItems = allItems.retrieveItemById(1)
        self.tableView.reloadData()
    


如何正确配置搜索栏,以便在更改搜索值时调用此函数?

【问题讨论】:

参考此链接***.com/questions/29664315/… 嗨,该链接是以编程方式创建搜索,我不想这样做,因为我需要它在故事板上的特定位置。除非有办法以编程方式定位它? 您的表格视图已经存在于情节提要中。当您执行“self.tableView.tableHeaderView = searchController.searchBar”时,搜索栏将添加到您在故事板中定义的 tableview 的标题处。因此,您仍然可以使用您的故事板,只需通过该说明添加 searchController。 不幸的是,这一行“self.tableView.tableHeaderView = searchController.searchBar”删除了我现有的标题,并将其替换为顶部的搜索栏,这是我试图避免的 【参考方案1】:

我认为您可以只使用 UISearchBar 而不使用搜索显示控制器。

确保您的 UISearchBar 委托从情节提要设置为 ViewItemTableViewController。然后您可以使用以下委托函数来执行您的任务:

func searchBarSearchButtonClicked(searchBar: UISearchBar)

func searchBarTextDidEndEditing(searchBar: UISearchBar)

【讨论】:

以上是关于如何正确配置添加到现有表视图控制器的搜索栏?的主要内容,如果未能解决你的问题,请参考以下文章

如何从表中将列添加到现有视图? [复制]

表视图搜索栏

嵌套视图中的搜索栏和搜索栏控制器 (iOS)

text 在Swift中将搜索栏添加到表视图

如何在每个视图上添加 UISearchbar

如何将搜索栏添加到集合视图控制器?