iOS 动态改变 rootViewController

标签 ios objective-c rootviewcontroller

我想动态更改 rootViewController。这取决于 json 响应。我有一个 BOOL 值,它在收到 json 响应后发生变化。问题是即使条件为真,这个值也永远不会改变。

我的代码在下面,我把它放在应用程序 didFinishLaunchingWithOptions 中:

isTime = NO;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:
                                                           [url
                                                              stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ]];


__block NSDictionary * json;
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response,NSData *data,NSError *connectionError){
       json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&connectionError];
    NSLog(@"JSON >>>> %@",[json objectForKey:@"status"]);
    if ([[json objectForKey:@"status"] isEqualToString:@"ok"]) {
        isTime = YES;
    }
}];
if(isTime){
//rootView1
}else{
 //rootView2
}

我该如何解决?有什么想法吗?

最佳答案

如下更改您的代码。

 {   
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:
                                                               [url
                                                                  stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ]];


__block NSDictionary * json;
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response,NSData *data,NSError *connectionError){
       json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&connectionError];
    NSLog(@"JSON >>>> %@",[json objectForKey:@"status"]);
    if ([[json objectForKey:@"status"] isEqualToString:@"ok"]) {
        //rootView1
        //Change RootVC to RootView1
    }
    else {
        //rootView2
         //Change RootVC to RootView2
    }

}];

//Add LoadingVC (Intermediate) RootVC

}

-(void) changeRootViewController:(UIViewController*) viewController {
    [[[[UIApplication sharedApplication] delegate] window] setRootViewController: viewController];
}  

关于iOS 动态改变 rootViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38009827/

相关文章:

ios - 用户登录后更新 Root View Controller + iOS 13 及更高版本

ios - 更改 rootViewController 导致奇怪的行为

ios - 关闭一个 View Controller,然后呈现一个 Alert Controller

iphone - 来自文件问题的UIImage

ios - 在 iOS iPhone 应用程序中以 60 fps 下采样实时视频

c# - 使用 C# 和 Objective-C 的 SIP 调用

ios - 为什么将 CLGeocoder 与 "placemarks"数组一起使用?

ios - 尝试将苹果的页面控件示例合并到 Storyboard View Controller 中

iphone - 单击时如何使按钮变亮(如单击 iphone 中的 shift 键)

iphone - 无法从 UISearchDisplayController 委托(delegate)推送 View Controller