在调用cancelButton之后,将UISearchBar隐藏在UINavigationBar下面

gia*_*mpo 5 iphone cancel-button uisearchbar uisearchdisplaycontroller

我通常使用[self.tableView setContentOffset:CGPointMake(0,40)];以隐藏在navigationBar下面的UISearchBar(我将其设置为tableView的标题).在viewDidLoad中一切正常:加载视图时,searchBar位于navigationBar下方.然后我把相同的代码行

[self.tableView setContentOffset:CGPointMake(0,40)]
Run Code Online (Sandbox Code Playgroud)

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
Run Code Online (Sandbox Code Playgroud)

但它可以做任何事情:单击取消按钮时,searchBar仍然可见.怎么了?

San*_*aal 1

下面的方法是从主线程调用的吗?

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
Run Code Online (Sandbox Code Playgroud)

你可以这样检查:

if ([NSThread isMainThread]) {
    NSLog(@"Yes it is the main thread.");
}
Run Code Online (Sandbox Code Playgroud)

否则,任何视图更改都不会在屏幕上注册。如果您必须从单独的线程修改视图,您可以使用以下命令:

[self performSelectorOnMainThread:@selector(XXX) withObject:nil waitUntilDone:NO];
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是你的问题,但这是我要开始寻找的地方。