我在导航控制器中实现了一个Table View的UISearchController。
我的问题是,每当我点击搜索栏时,它都会消失。当我输入一些文本时它可以工作,但它完全为空白。然后我使用以下代码部分地解决了这个问题:
- (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];
uisearchcontroller
初始化代码。查看此链接并确保你的初始化代码是正确的。https://developer.apple.com/library/ios/samplecode/TableSearch_UISearchController/Introduction/Intro.html - Serge MaslyakovNavigationBar
的半透明属性 - 当SearchController
呈现searchBar
时,它应该是“YES”,否则会出现UI错误。UISearchController
呈现方式,则不应手动管理将searchBar
添加到子视图中。