navigationController 如何在此代码中设置它的 topViewController(来自 CoreDataBooks 示例)?

Posted

技术标签:

【中文标题】navigationController 如何在此代码中设置它的 topViewController(来自 CoreDataBooks 示例)?【英文标题】:how does navigationController get it's topViewController set in this code (from CoreDataBooks example)? 【发布时间】:2011-02-26 05:13:31 【问题描述】:

我假设在 NIB 文件中有一些映射,但是我无法通过查看此代码和 Interface Builder 中的 NIB 文件来证明自己在这里是如何工作的。

该示例的源代码可在here 获得。

有人能解释一下topViewController是在这个应用程序中设置的,比如在CoreDataBooksAppDelegate.m“applicationDidFinishLaunching”方法中,获得了一个RootViewController的实例吗?我猜这个解释可能围绕着如何处理 Interface Builder 和 NIB 文件......

- (void)applicationDidFinishLaunching:(UIApplication *)application 

    RootViewController *rootViewController = (RootViewController *)[navigationController topViewController];  // <=== HOW DOES THIS WORK
    rootViewController.managedObjectContext = self.managedObjectContext;

    // Configure and show the window
    [window addSubview:[navigationController view]];
    [window makeKeyAndVisible];

【问题讨论】:

【参考方案1】:

好像是在MainView.xib文件中设置的。导航控制器内部有一个设置为 RootViewController 类的视图控制器。

【讨论】:

所以NIB设置暗示ios将在传递给“applicationDidFinishLaunching”之前创建此类项目的实例? 它“懒惰地”加载东西,这意味着当你尝试访问一个项目时,它会从笔尖加载它。

以上是关于navigationController 如何在此代码中设置它的 topViewController(来自 CoreDataBooks 示例)?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NavigationController 保持在 subViewController 方向?

添加到 NavigationController 时如何释放 ViewController 对象?

如何在 ViewController 及其 NavigationController 上添加 UIview

如何使用 UIApplicationShortCut 和 NavigationController 导航以获取孩子 4

如何在 UIPopOverController 中嵌套 navigationController?

如何在 iPhone 上的 UIPopoverController 中显示 NavigationController-background