我已经在TableView中实现了UISearchController,由导航控制器推送。
首先,我的问题是,每当我单击SearchBar时,它就会消失。当我输入一些文本时,它可以工作,但是它完全空白。然后,我设法使用此代码半解决了这个问题:
- (void)searchForText:(NSString*)searchText
{
[self.view addSubview:villeSearchController.searchBar];
}
哪种方法行之有效,因为现在,当我单击搜索栏时,它会空白,但是如果我输入一个字符,它将再次出现,然后无论如何都停留在那里。直到我取消搜索,然后再次单击它,在这种情况下,它还是空白了。我进行了一些测试,并且在第一次单击时就调用了此方法(searchForText),所以这不是原因。
有谁知道我该如何解决这个问题,并使搜索栏从第一次点击就出现?
编辑:
这就是我初始化SearchController的方式:
villeSearchController = [[UISearchController alloc] initWithSearchResultsController:nil];
villeSearchController.searchResultsUpdater = self;
villeSearchController.dimsBackgroundDuringPresentation = NO;
villeSearchController.searchBar.delegate = self;
villeTableView.tableHeaderView = villeSearchController.searchBar;
villeSearchController.searchBar.scopeButtonTitles = @[];
self.definesPresentationContext = YES;
[villeSearchController.searchBar sizeToFit];
尝试检查navigationBar.translucent
属性-当UISearchController
显示时应为YES,searchBar
否则应为UI错误。
来自@SiavA的更新
更好的解决方案是使用的extendedLayoutIncludesOpaqueBars
属性UIViewController
。如果您使用不透明的导航栏,只需在true
将显示的for控制器UISearchController
(而非for navigationController
)中进行设置即可。
例如
- (void)viewDidLoad {
[super viewDidLoad];
self.extendedLayoutIncludesOpaqueBars = !self.navigationController.navigationBar.translucent;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句