Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从后台线程在UINavigationItem上显示UISearchController_Ios_Objective C_Multithreading_Ios11 - Fatal编程技术网

Ios 从后台线程在UINavigationItem上显示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

如果要从后台线程显示,请使用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。

我已经尝试过你的代码,它工作得非常好。请确保您的设备或模拟器版本大于或等于iOS 11,并且您不使用
navigationItem
执行任何其他操作


如果VC是从另一个viewController推送或显示的,请将代码放入
ViewDidDisplay
。它将起作用

尝试我的示例代码,由segue打开或由其他人演示VC@NikolayKrasnov您的意思是您的VC是从另一个viewController推送或呈现的。是否正确?尝试将代码放入
viewdide
。我已经更新了我的答案,你可以再次检查@尼古拉·拉斯诺维特会成功的。谢谢你的帮助。只有对我来说,这种行为看起来既不直观又不灵活?@NikolayKrasnov你能更清楚地解释你的问题吗?我不明白你想问什么。