我试图创建一个UISearchController,以简单地搜索UITableViewController中的项目。到目前为止,除了取消搜索后搜索栏的位置以外,其他所有功能都正常运行。我已经使用下面的代码以编程方式添加了它。
resultsVC = [UITableViewController new];
resultsVC.tableView.dataSource = self;
resultsVC.tableView.delegate = self;
resultsVC.clearsSelectionOnViewWillAppear = true;
//register custom table cell
searchController = [[UISearchController alloc] initWithSearchResultsController:resultsVC];
searchController.searchResultsUpdater = self;
searchController.dimsBackgroundDuringPresentation = false;
self.tableView.tableHeaderView = searchController.searchBar;
self.clearsSelectionOnViewWillAppear = YES;
self.definesPresentationContext = true;
首次启动应用程序时,搜索栏会正确显示如下。
但是在单击搜索栏然后取消搜索之后,当搜索栏返回其原始位置时,导航栏会稍微覆盖它。
似乎表格视图无缘无故地向下滚动。我可以通过向上滚动tableView轻松地将屏幕返回到第一张图片,但是我想自动执行此操作,或者根本不必向上滚动。我觉得这是xcode或其他方面的错误,虽然没什么大不了,但是却很烦人,我知道必须解决一些问题。如何以编程方式确保搜索栏返回正确的位置?
到目前为止,我已经尝试过弄乱搜索控制器以及包含搜索控制器的ViewController上的属性。我尝试更改的属性为adjustScrollViewInsets
,definesPresentationContext
,extend edges Under Top Bars from the Storyboard
。我不想在UISearchController上使用hidesNavigationBarDuringPresentation
。
我也曾尝试在按下“取消”按钮时使用SearchController委托方法,以尝试在取消搜索后滚动到表格视图的顶部,但这也不起作用。
我尝试了这两种滚动到顶部的方法。
[self.tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
[self.tableView setContentOffset:CGPointZero animated:YES];
有人有解决此问题的经验吗?谢谢您的阅读!