不鼓励在分离的视图控制器上显示视图控制器 - "detached view controller"的定义?



好。所以我浏览了一下网络,读到了关于这个相对较新的iOS警告的类似问题。我的应用程序不使用故事板。我只有一个简单的问题。什么是"分离的视图控制器",任何人都能提供一个明确的参考(例如,苹果文档),提供"分离视图控制器"的定义,正如我们在本警告中所理解的那样。如果没有人真正理解什么是分离的视图控制器,我看不出这个问题的其他答案不仅仅是围绕这个主题的摸索和猜测。

分离的视图控制器当前不在[[[UIApplication sharedApplication] keyWindow] rootViewController] 的层次结构中

例如,我可以在代码中的任何位置实例化UIViewController,但如果我从不通过将其作为rootViewController或推送到rootViewController中的导航堆栈来将其放入此层次结构中,那么当我在其上呈现某些内容时,我会得到奇怪/未定义的行为。

示例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIViewController* a = [[UIViewController alloc] init];
    UIViewController* b = [[UIViewController alloc] init];
    UIViewController* someOtherVC = [[UITableViewController alloc] init];

    self.window.rootViewController = a;
    //Works fine :)
    [a presentViewController:someOtherVC animated:YES completion:nil];
    //might break the world
    [b presentViewController:someOtherVC animated:YES completion:nil]; 
}

最新更新