Ios 在当前显示视图控制器上显示警报控制器

Ios 在当前显示视图控制器上显示警报控制器,ios,objective-c,uiviewcontroller,uinavigationcontroller,uiwindow,Ios,Objective C,Uiviewcontroller,Uinavigationcontroller,Uiwindow,在我的应用程序中,我使用了两个故事板。主要和主要2 Main故事板有两个VCs,第一个VCs嵌入到导航控制器中。同样适用于Main2情节提要-在第一个VC中按下的按钮将推到主中的第二个VC-在第二个VC中按下的按钮将显示Main2情节提要的第一个VC-在第一个VC中按下的按钮将推到Main2中的第二个VC [[UIApplication sharedApplication] keyWindow].rootViewController = self.navigationController; 我

在我的应用程序中,我使用了两个故事板。主要和主要2

Main故事板有两个VCs,第一个VCs嵌入到导航控制器中。同样适用于Main2情节提要<代码>-在第一个VC中按下的按钮将推到中的第二个VC<代码>-在第二个VC中按下的按钮将显示Main2情节提要的第一个VC<代码>-在第一个VC中按下的按钮将推到Main2中的第二个VC

[[UIApplication sharedApplication] keyWindow].rootViewController = self.navigationController;
我有一个类NetworkConnection,它是一个共享实例。当可达性改变时,我调用以下方法

- (void)internetConnectionAlert {
    NetworkStatus status = [[Reachability reachabilityForInternetConnection] currentReachabilityStatus];

    id obj = [[[UIApplication sharedApplication] keyWindow] rootViewController];

    if ([obj isKindOfClass:[UINavigationController class]] && (status == NotReachable)) {

        UIViewController *viewController = [[obj viewControllers] lastObject];
        [viewController presentViewController:self.alertController
                                     animated:YES
                                   completion:nil];
    } else {
        [self.alertController dismissViewControllerAnimated:YES completion:nil];
    }
}
我运行应用程序。Main的第一个VC出现。我断开了网络<代码>警报控制器由于可达性更改而出现。我连接回网络<代码>警报控制器被解除。当我转到SecondVC(仍在Main中)时也是一样。所以一切都很好

我在第二个VC中按下按钮,它会转到主2的第一个VC。现在,当我断开网络连接时,会弹出no
AlertController

所以我放了一些圆木。事实证明,当我从一个故事板转到另一个故事板时,rootViewController不会更改为新的导航控制器。rootViewController仍然是Main中的导航控制器,而不是Main2中的导航控制器

[[UIApplication sharedApplication] keyWindow].rootViewController = self.navigationController;
这是我放在
-viewDidLoad
中的日志,该日志位于Main2

NSLog(@"Key window rvc : %@",[[[UIApplication sharedApplication] keyWindow] rootViewController]);
NSLog(@"self navi   vc : %@",self.navigationController);
这张照片

2016-06-24 18:55:16.622 Navi[12129:3257811] Key window rvc : <UINavigationController: 0x7feaac834800>
2016-06-24 18:55:16.622 Navi[12129:3257811] self navi   vc : <UINavigationController: 0x7feaac832800>
我不认为这有什么好处,因为我几乎肯定会在代码中的某个时刻需要原始的rootViewController。此外,当项目变得更大时,在每个VC中使用上述代码将是一个麻烦

那么,如何让AlertController显示在当前的ViewController(屏幕上),而不考虑层次结构混乱

谢谢你的耐心

编辑:快速了解正在发生的事情(但不要出现零问题)

更改情节提要的代码

- (IBAction)buttonTapped:(id)sender {
    MainTwoViewController *mainTwoVC = [[UIStoryboard storyboardWithName:@"Main2" bundle:nil] instantiateInitialViewController];
    [self presentViewController:mainTwoVC animated:YES completion:nil];
}

你能提供你如何改变故事板的代码吗?@TejaNandamuri你看了。在你展示它之后,试着把根控制器改成mainTWoVc。@TejaNandamuri你读了全部内容吗?这就是重点。不能有两个根控制器。你只能有一个。当您从不同的故事板演示vc时,您也应该更改根控制器。否则,您应该只使用一个故事板。您能提供如何更改故事板的代码吗?@TejaNandamuri,好了。在演示之后,尝试将根控制器更改为mainTWoVc。@TejaNandamuri您阅读了全部内容吗?这就是重点。不能有两个根控制器。你只能有一个。当您从不同的故事板演示vc时,您也应该更改根控制器。否则,您应该只使用一个故事板。