【问题标题】:iPhone Development - Setting up a view in a view controlleriPhone 开发 - 在视图控制器中设置视图
【发布时间】:2010-11-15 19:54:41
【问题描述】:

我正在学习在没有 Interface Builder 的情况下为 iPhone 开发(个人偏好),但我不确定我应该在哪个视图控制器功能中设置视图:init、viewDidLoad 或 loadView。我在某处读到仅将 init 用于视图控制器(如果有的话),而不是设置视图,因为它可能会导致问题。我还读到 viewDidLoad 仅用于从 nib 文件加载,但是当我尝试使用它时它起作用了.. 那么我应该在这 3 种方法中的每一种中添加什么?

谢谢!!

【问题讨论】:

    标签: iphone uiview uiviewcontroller methods initialization


    【解决方案1】:

    每个方法都有自己的目的

    1) 初始化

    此方法仅用于初始化 ViewController ,您不需要重写此方法,但如果您想在加载任何视图之前进行一些自定义初始化,那么这可能是一个这样做的地方。您有不同风格的 init 方法,您可以查看苹果网站上的文档。

    2) 加载视图 此处的此方法用于以编程方式创建您的视图。如果这个方法没有被覆盖,默认会为你创建一个空视图,但如果是你必须初始化 viewController.view 属性,当 UIViewController 视图被推入超级视图时会调用它。

    3) viewDidLoad 此方法在您的视图加载到屏幕上后调用(在调用 loadView 并将视图推送到超级视图或窗口上之后)。在这里,您可以将子视图添加到控制器视图中,还可以在视图加载后进行其他设置。无论从 nib 或以编程方式创建视图,此方法都有效。

    【讨论】:

    • 你确定,因为这是来自苹果文档 viewDidLoad:如果视图控制器从 nib 文件中取消归档,则在设置视图后调用此方法。因此,子类应该重写此方法,而不是 loadView 方法,以初始化从 nib 加载的对象。------------ 差不多就是 nib -> viewDidLoad,编程方式 -> loadView,对吧?跨度>
    • 不,这是说如果您使用笔尖,则不要覆盖 loadView,因为在笔尖中已经为您完成了视图设置。就是这么说的
    • 因此,如果您想在使用 nib 作为视图的视图控制器中进行额外设置,则必须在 viewDidLoad 中进行,而不能在 loadView 中进行
    • 好吧,所以 loadView -> 仅当我需要普通 UIView 以外的东西时,比如我有自己的 UIView 子类,通常甚至不覆盖 viewDidLoad -> 设置所有控件,然后添加他们到self.view。和 init -> 仅当我需要初始化视图控制器时。
    • 类似的东西,如果你想在不使用笔尖时在 viewdidload 或 loadview 中设置你的视图组件,你可以选择
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多