Ios 从后台线程在UINavigationItem上显示UISearchController
如果要从后台线程显示,请使用iOS 11 SDK显示UISearchController更新版本:Ios 从后台线程在UINavigationItem上显示UISearchController,ios,objective-c,multithreading,ios11,Ios,Objective C,Multithreading,Ios11,如果要从后台线程显示,请使用iOS 11 SDK显示UISearchController更新版本: - (void)viewDidLoad { self.searchResultsController = [UITableViewController new]; self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsControll
- (void)viewDidLoad
{
self.searchResultsController = [UITableViewController new];
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSLog(@"Do something in background");
dispatch_async(dispatch_get_main_queue(), ^{
if (@available(iOS 11.0, *)) {
self.navigationItem.searchController = self.searchController;
}
});
});
}
有人知道在后台任务完成后如何显示它吗
EDIT1:
带有搜索控制器的VC不应该是初始VC。我已经尝试过你的代码,它工作得非常好。请确保您的设备或模拟器版本大于或等于iOS 11,并且您不使用
navigationItem
执行任何其他操作
如果VC是从另一个viewController推送或显示的,请将代码放入
ViewDidDisplay
。它将起作用尝试我的示例代码,由segue打开或由其他人演示VC@NikolayKrasnov您的意思是您的VC是从另一个viewController推送或呈现的。是否正确?尝试将代码放入viewdide
。我已经更新了我的答案,你可以再次检查@尼古拉·拉斯诺维特会成功的。谢谢你的帮助。只有对我来说,这种行为看起来既不直观又不灵活?@NikolayKrasnov你能更清楚地解释你的问题吗?我不明白你想问什么。