gpt4 book ai didi

ios - 在推送 View 上使用 UISearchController

转载 作者:行者123 更新时间:2023-12-02 03:16:20 25 4
gpt4 key购买 nike

我已在我的应用中成功实现了 UISearchController。我在要使用它的 View 的 viewDidLoad 方法中像这样设置它:

_profileSearchView = [self.storyboard instantiateViewControllerWithIdentifier:@"profileListView"];
[_profileSearchView initSearchController];
self.navigationItem.titleView = _profileSearchView.searchController.searchBar;

initSearchController 方法初始化搜索 Controller ,该 Controller 是 _profileSearchView 的一个属性,驻留在 _profileSearchView 中:

- (void) initSearchController {
_searchController = [[UISearchController alloc] initWithSearchResultsController:self];
_searchController.delegate = self;
_searchController.hidesNavigationBarDuringPresentation = NO;

_searchController.searchBar.delegate = self;
_searchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
_searchController.searchBar.showsCancelButton = YES;
_searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x, self.searchController.searchBar.frame.origin.y, self.searchController.searchBar.frame.size.width, 44.0);
}

如果我在导航 Controller 的 Root View 中使用它,效果很好。但是,如果我推送一个 View 并尝试在那里使用它,搜索 Controller 不会变为事件状态,并且此错误会显示在控制台中:

Warning: Attempt to present <UISearchController: 0x7fb113605220> on <RootViewController: 0x7fb11318a6d0> whose view is not in the window hierarchy!

它提示的 RootViewController 是我从中推送的 Root View 。为什么这只能在 Root View 中起作用?

更新: Root View Controller 有 self.definesPresentationContext = YES; (推送的 View 也有),当我从 Root View 中删除它时,搜索 Controller 在推送的 View 上工作。不幸的是,这也破坏了其他一些东西,所以我需要保留它。那么我怎样才能允许 Root View 和推送 View 都有一个单独的功能搜索 Controller 呢?

最佳答案

该问题是由 Root View 和推送 View 均具有 self.definesPresentationContext = YES; 引起的。解决方案是添加以下内容:

- (void) viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.definesPresentationContext = NO;
}

并确保当 View 出现时它是YES:

-(void) viewWillAppear:(BOOL)animated {
self.definesPresentationContext = YES;
}

在 Root View 中。 Root View 仍然能够从其自己的搜索 Controller 正确推送搜索结果,推送的 View 也是如此。

关于ios - 在推送 View 上使用 UISearchController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com