【问题标题】:What does setting the UIWindow's rootViewController do?设置 UIWindow 的 rootViewController 有什么作用?
【发布时间】:2012-01-02 11:51:49
【问题描述】:

将视图控制器分配给该属性(以编程方式 或使用 Interface Builder)将视图控制器的视图安装为 窗口的内容视图。

以上引用来自 UIWindow 的参考。我的问题是关于特定阶段的:

" 将视图控制器的视图安装为 窗口的内容视图"

内容视图到底指的是什么?

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html

【问题讨论】:

    标签: iphone ios cocoa-touch uiviewcontroller uiwindow


    【解决方案1】:

    rootViewController 属性出现之前,大多数应用程序的应用程序委托中都有这样的代码:

    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
    

    此代码将视图控制器的视图设置为主视图,但 UIWindow 实例没有引用拥有该视图的控制器。

    当您使用rootViewController 属性时,您不再需要将视图控制器的视图添加到 UIWindow 实例中,这是自动完成的。所以代码行数保持不变,但现在你的 UIWindow 有了对视图控制器的引用。

    因此,在较新的应用程序中,我们现在的代码如下所示:

    window.rootViewController = viewController;
    [window makeKeyAndVisible];
    

    【讨论】:

    • +1 考虑历史推理的综合答案
    • 感谢您的帮助
    • 请注意,它在 4.0+ 中可用
    • @CanBerkGüder 是不是真的只有 rootviewcontroller 会得到像 didReceivememoryWarning 这样的回调函数?
    • @S.J 每个推送到导航控制器的视图控制器都会收到 didReceivememoryWarning 调用。自己试试看。实现didReceivememoryWarning方法,让该方法调用NSLog,然后在iOS模拟器中模拟内存不足的情况。
    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    相关资源
    最近更新 更多