我的UISearchBar移到顶部(动画) - >想要禁用

时间:2016-05-24 08:30:06

标签: ios iphone swift uitableview uisearchbar

我希望在UISearchBar上实施tableView

我的代码(在viewDidLoad中):

self.searchController = UISearchController(searchResultsController: nil)
self.searchController.searchResultsUpdater = self
self.searchController.delegate = self
self.searchController.searchBar.delegate = self
self.searchController.searchBar.autocapitalizationType = .None
self.searchController.searchBar.autocorrectionType = .No

self.searchController.hidesNavigationBarDuringPresentation = false
self.searchController.dimsBackgroundDuringPresentation = false

self.tableView.tableHeaderView = self.searchController.searchBar

当我点击searchBar时,这一个移至顶部,就像它想要隐藏navigationBar

When the searchbar is waiting

When I click in the searchbar

我在很多帖子上搜索了答案,但没有任何效果。我想禁用此动画,以免searchBar移动。

2 个答案:

答案 0 :(得分:23)

您应该可以通过设置:

来阻止这种情况
self.searchController.hidesNavigationBarDuringPresentation = false

答案 1 :(得分:5)

您可以将UISearchController视为在开始搜索时以模态方式呈现。如果你有一个通常的UINavigationController设置,这可以正常工作,但是在像你这样的更“自定义”的用户界面中,你可能会遇到诸如搜索控制器附加到错误视图等问题。

我建议你不要在你的情况下使用UISearchController并使用单独的UISearchBar初始化你的界面的其余部分(可能在故事板中?),然后手动进行搜索。如果您无法简单地过滤内容,请实施UISearchBarDelegate并为搜索结果添加自己的UITableView

虽然看起来你有一个tableView var - 你可以简单地添加另一个属性,类似于你用作UITableViewDataSource的属性,并在那里存储过滤的数据。因此,只要您在UISearchBar中拥有某些内容,就可以在重新加载表格视图数据时使用过滤的数据源。例如:

var data: [String]
var filteredData: [String]

然后在filteredData

中使用UITableViewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return filteredData.count
}

...

然后在UISearchBarDelegate

中执行类似的操作
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
    // Filter the data you have. For instance:
    filteredData = data.filter({$0.rangeOfString(searchText).location != NSNotFound})
    tableView.reloadData()
}