我在最初的UIViewController中添加了一个UISearchBar,并且一切正常。但是,当我添加相同的UISearchBar,以相同的方式添加到另一个推到第一个ViewController的ViewController时,当我单击searchBar时似乎什么也没发生。没有触发任何委托(delegate)方法,没有键盘启动,什么也没有。
这就是我将其添加到navigationBar的方式:
- (void)viewDidLoad {
[super viewDidLoad];
UITableViewController *searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
searchResultsController.tableView.dataSource = self;
searchResultsController.tableView.delegate = self;
self.searchResults = [NSMutableArray array];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
self.searchController.searchResultsUpdater = self;
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.searchBar.placeholder = NSLocalizedString(@"Search, eh?", nil);
// Include the search bar within the navigation bar.
self.navigationItem.titleView = self.searchController.searchBar;
self.definesPresentationContext = YES;
}
就像我说的那样,它可以在第一个UIViewController中工作,我是否也想尝试添加其他2-3个viewController中的东西呢?我不知道为什么searchBar出现在navBar中,但是单击后什么也没有发生。我也将委托(delegate)设置为:
@interface ViewController () <UISearchResultsUpdating>
最佳答案
一旦出现新的 View Controller ,就尝试在第一个 View Controller 上将definesPresentationContext
设置为NO
。
我相信该演示文稿将在 View Controller 层次结构中向上移动,以寻找定义上下文的第一个,而不是向下。