使用iOS 11 SDK时,如果要从后台线程显示UISearchController,则会显示更新的
- (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。
答案 0 :(得分:1)
我已经尝试过你的代码并且它完美无缺。请确保您的设备或模拟器版本大于或等于iOS 11,并且您不会对navigationItem
执行任何其他操作。
如果从其他viewController推送或显示VC,请将代码放入viewDidAppear
。它会起作用