el-*_*lor 4 uisearchbar tableview ios uisearchcontroller
我在TableView中实现了一个UISearchController,由一个导航控制器推送.
首先我的问题是每当我点击SearchBar时,它就会消失.当我输入一些文本时,它可以工作,但它保持完全空白.然后我设法使用此代码半解决问题:
- (void)searchForText:(NSString*)searchText
{
[self.view addSubview:villeSearchController.searchBar];
}
Run Code Online (Sandbox Code Playgroud)
哪个半工作因为现在,当我点击搜索栏时,它会消隐,但是如果我输入一个字符,它会再次出现,然后它就会停留在那里,无论如何.直到我取消搜索,然后再次点击它,在这种情况下它会消隐.我做了一些测试,并在第一次点击时调用此方法(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];
Run Code Online (Sandbox Code Playgroud)
Mat*_*erg 17
当UISearchController隐藏导航栏时,这发生在我身上.设置此属性修复它:
UISearchController.hidesNavigationBarDuringPresentation = NO;
Ser*_*kov 13
尝试检查navigationBar.translucent属性 - 当UISearchController呈现时应该是YES,searchBar否则将是UI错误.
来自@SiavA的更新
更好的解决方案是使用的extendedLayoutIncludesOpaqueBars属性UIViewController.如果您使用不透明导航栏,只需将其设置在true将要显示的for控制器中UISearchController(不适用于navigationController).
例如
- (void)viewDidLoad {
[super viewDidLoad];
self.extendedLayoutIncludesOpaqueBars = !self.navigationController.navigationBar.translucent;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6356 次 |
| 最近记录: |