我正在尝试使用新的iOS-11 searchBar方法,但没有成功。将显示searchBar,但显示在左侧栏按钮的下方,而不是其旁边:

在横向模式中也是如此。我使用的代码是:
self.searchResults = [[SearchResultsTable alloc] init];
self.searchResults.delegate = self;
searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResults];
searchController.searchResultsUpdater = self.searchResults;
searchController.hidesNavigationBarDuringPresentation = NO;
self.definesPresentationContext = YES;
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self
action:@selector(swapToListView:)];
if ([self.navigationItem respondsToSelector:@selector(setSearchController:)]) {
// only available from IOS-11 onwards
self.navigationItem.title = nil;
self.navigationItem.titleView = nil;
[self.navigationItem setSearchController:searchController];
} else {
// Fallback on earlier versions
self.navigationItem.titleView = searchController.searchBar;
}旧的代码在iOS-11之前的系统上运行良好,但在iOS-11上有其他问题,所以我更喜欢使用新的方法。有人知道我做错了什么吗?
发布于 2018-01-22 18:01:22
如果你想把搜索栏放在左导航项旁边,那么让你的搜索栏成为navigationItem的titleView,而不管iOS的版本是什么,并且不要使用UINavigationItem的searchController属性。
https://stackoverflow.com/questions/47138413
复制相似问题