从后台线程在 UINavigationItem 上显示 UISearchController
Showing UISearchController on UINavigationItem from background thread
使用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;
}
});
});
}
谁知道后台任务完成后怎么显示?
编辑 1:
VC with search controller 不应该是初始的 VC。
我试过你的代码,它运行良好。请确保您的设备或您的模拟器版本大于或等于 iOS 11,并且您不要对 navigationItem
.
进行任何其他操作
如果您 VC 被另一个 viewController 推送或呈现,请将您的代码放入 viewDidAppear
。它会起作用
使用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;
}
});
});
}
谁知道后台任务完成后怎么显示?
编辑 1: VC with search controller 不应该是初始的 VC。
我试过你的代码,它运行良好。请确保您的设备或您的模拟器版本大于或等于 iOS 11,并且您不要对 navigationItem
.
如果您 VC 被另一个 viewController 推送或呈现,请将您的代码放入 viewDidAppear
。它会起作用