iOS 添加 UISearchController 正在取消隐藏 NavigationBar
<p><p>当我使用 UISearchController 更新我的表格 View 时,我遇到了这种奇怪的副作用(如果我从表格 View 中选择某些内容而不搜索该错误不会自行显现)。但是当我搜索时,选择一个单元格,然后 <code>popViewControllerAnimated:</code> 由于某种原因 NavigationBar 不再隐藏。我想认为这是 iOS 中的错误,而不是特定于我的代码。但我想我会看看是否有人能在我的代码中发现一个错误,或者对我可能做错的事情有任何想法。我已将 <code>;</code> 添加到 <code>rootView</code> 的 <code>viewWillAppear</code> 中,但该栏直到动画结束了。</p>
<p>我的 TableView/UISearchController 代码:</p>
<pre><code>@interface LBSelectUniversityView()<UISearchResultsUpdating, UISearchBarDelegate>
@property (strong, nonatomic) UISearchController *searchController;
@end
@implementation LBSelectUniversityView {
NSArray *schoolNames;
NSArray *searchResults;
}
- (void)viewDidLoad {
;
schoolNames = [ schoolNames];
searchResults = schoolNames;
self.searchController = [ initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.delegate = self;
self.tableView.tableHeaderView = self.searchController.searchBar;
self.definesPresentationContext = YES;
;
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return searchResults.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = ;
if (cell == nil) {
cell = [ initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}
...
return cell;
}
- (void)filterContentForSearchText:(NSString*)searchText{
if () return;
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains %@",
searchText];
searchResults = ;
}
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController{
NSString *searchString = searchController.searchBar.text;
;
;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
...
;
}
@end
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>如果您设置 <code>searchController.hidesNavigationBarDuringPresentation = NO</code>,问题会消失吗?</p>
<p>可能正在发生以下情况:</p>
<ol>
<li>当您开始搜索时,<code>searchController.active</code> 设置为 <code>YES</code>。因此 <code>searchController</code> 调用 <code>[... setNavigationBarHidden:YES]</code> 因为 <code>UISearchController.hidesNavigationBarDuringPresentation = YES</code> 默认情况下。</li>
<li><code>popViewControllerAnimated:</code> 被调用。</li>
<li><code>searchController.active</code> 设置为 <code>NO</code>,所以 <code>searchController</code> 调用 <code>[... setNavigationBarHidden:NO]</code> .这会导致显示导航栏。</li>
</ol></p>
<p style="font-size: 20px;">关于iOS 添加 UISearchController 正在取消隐藏 NavigationBar,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/32803892/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/32803892/
</a>
</p>
页:
[1]