我有一个 UISearchController
和一个 UITableViewController
作为 searchResultsController
,这个 searchController 的
设置为在我的根 ViewController 中显示的当前 UISearchBar
tableView
的 tableHeaderView
中。正如预期的那样,几乎一切都运行良好。但是在 UISearchBar
的动画中(当我点击 searchBar 并且 UINavigationBar
隐藏并且 searchBar 到达顶部时,如在 UISearchDisplayController
) 我有一个奇怪的行为。它没有移动到 UINavigationBar
(y: 0) 的位置,而是跳出屏幕并启动显示取消按钮的动画。我尝试将我的实例化代码移动到 viewDidLoad
而不是 init
,结果是一样的。我认为问题的中心在于 searchResultsController
View 的框架,但我不确定(我尝试设置框架,但没有成功)。我所做的一切都是纯代码。
这是代码的相关部分:
- (void) viewDidLoad {
[super viewDidLoad];
// search controller setup
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
self.searchController.delegate = self;
self.searchController.searchResultsUpdater = self;
self.searchController.searchBar.delegate = self;
[self.searchController.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchController.searchBar;
self.searchController.definesPresentationContext = YES;
}
我为 searchResultsController
设置了延迟加载:
- (UITableViewController *)searchResultsController {
if (_searchResultsController == nil) {
_searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
_searchResultsController.tableView.delegate = self;
_searchResultsController.tableView.dataSource = self;
}
return _searchResultsController;
}
我已经从 apple 下载了示例代码,但他们使用 storyBoards 和 UITableViewCell 的 xib,SearchController 在项目中完美运行。有没有人有同样的问题?我怎样才能解决这个问题?任何解决方案或建议将不胜感激。
感谢关注。
最佳答案
添加
self.extendedLayoutIncludesOpaqueBars = YES;
关于 viewDidLoad
方法
关于ios - tableHeaderView 中的 UISearchController searchBar 在屏幕外设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222671/