我在最初的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 层次结构中向上移动,以寻找定义上下文的第一个,而不是向下。

10-07 13:02
查看更多