【问题标题】:iPhone - nested views & controllersiPhone - 嵌套视图和控制器
【发布时间】:2010-05-28 23:36:47
【问题描述】:

是否可以有一个单独的 iPhone 屏幕,其视图由该屏幕的 UIViewController 从 xib 加载,但该屏幕内的另一个 UIView 的内容从单独的 xib 文件加载?如果是这样,是否可以让嵌套视图的事件由屏幕其余部分的单独自定义 UIViewController 子类处理?如果这两种情况都可以,是否也是可取的?

【问题讨论】:

    标签: iphone objective-c cocoa cocoa-touch model-view-controller


    【解决方案1】:

    这是可能的。 Apple 建议不要同时在屏幕上激活多个 UIViewController,因此他们建议不要这样做。我建议仅在第二个视图控制器的原因是导航或模式时才这样做。

    以加载其他视图控制器为目的的视图控制器(如导航控制器)需要一些屏幕空间,并使用其余部分来加载另一个视图控制器。那也行。这里的标准是只有一个控制器呈现内容,而另一个控制器呈现导航。

    一个视图控制器可以加载另一个视图控制器来执行一些有限的任务,比如从列表中选择一个项目或输入一些文本。第二个视图控制器可能只填充屏幕的一部分。这里的标准是一个控制器的行为是模态的,并且只会显示足够长的时间来获得一些用户输入。

    至于在呈现内容的两个视图控制器之间分割屏幕的一般情况,Apple 建议您有一个派生自 UIViewController 的类来管理视图。如果视图足够复杂以保证其他控制器,则从 NSObject 派生它们并让主视图控制器与视图一起管理子控制器。子控制器将主控制器作为委托,主控制器将视图传递给子控制器进行管理但不拥有。

    【讨论】:

    • 优秀、翔实的答案。听起来我可能“有资格”......虽然你的回答让我认为可能有更好的方法。我对objective-c 非常陌生,对面向对象/mvc 编程相对较新。我认为做我需要做的事情的正确方法可能是将 UIViewController 子类化,然后从各种视图控制器中子类化该自定义类。谢谢。
    • 我也为我的大多数项目制作了一个自定义 UIViewController 基类。
    猜你喜欢
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2011-02-20
    • 2013-07-04
    相关资源
    最近更新 更多