【发布时间】:2018-07-13 21:59:11
【问题描述】:
我的用例有点奇怪。我正在使用自己的导航栏,所以我用
隐藏了默认导航栏[self.navigationController setNavigationBarHidden:YES animated:NO];
在viewWillAppear。
一切都很好,但如果我在主动搜索时打开键盘,然后我回到以前的UIViewController,那么本机导航栏会再次出现,我最终会看到 2 个导航栏(我的自己的和默认的)。
这就是我在viewDidLoad 中设置UISearchController 的方式:
- (void)viewDidLoad {
[super viewDidLoad];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.obscuresBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;
[self.searchController.searchBar sizeToFit];
self.definesPresentationContext = YES;
self.searchController.hidesNavigationBarDuringPresentation = YES;
self.searchController.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}
我已经尝试删除 self.definesPresentationContext = YES;(或将其设置为 NO),但这会产生一个不同的问题,即当我返回之前的 UIViewController 时,搜索栏始终位于其他所有内容之上!直到我点击取消。我还尝试在viewWillDissappear 上以编程方式调用“取消”按钮,但这也不起作用...
所以我的选择已经不多了,这就是我在这里的原因。
有什么想法吗?
【问题讨论】:
-
如果你使用自己的导航栏,为什么需要默认的?
-
@trungduc 我不知道!这就是整个问题。 UISearchController 将其恢复为默认值...
-
是否需要使用 searchController 或者为什么不使用 UISearchBar 组件。 ?
标签: ios objective-c uisearchbar uisearchcontroller