zoukankan      html  css  js  c++  java
  • loadView、viewDidLoad、initWithCoder、initWithNibName、awakeFromNib的用法

    转载,原地址为:http://jianyu996.blog.163.com/blog/static/11211455520131226840879/

    请尊重原创:

    1,无论XIB还是代码创建都会调用loadView方法。self.view为nil时才会被调用。

         手工创建视图时,loadView被调用时self.view还为nil。一般在该方法中手工定制view。
          XIB创建视图时,loadView仍会被调用、loadView被调用时XIB定制的视图还没创建完成,若是再覆写该方法的话、会将XIB定制的视图覆盖掉。
    所以,纯手工定制视图时,一般在该方法中写;XIB定制视图时、不要覆写该方法。

    2,无论XIB还是代码创建都会调用viewDidLoad方法。
         手工创建视图时,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
          XIB创建视图时,viewDidLoad仍会被调用,viewDidLoad被调用时self.view已经创建完成。可在在该方法中进一步定制视图。
    所以,无论那种方式定制视图、都可以覆写该方法。

    3,一般情况下调用 init方法或者调用initWithNibName方法实例化UIViewController, 不管调用哪个方法最终都会调用initWithNibName方法。
            当控制器被initWithNibName:并加入到导航控制器的栈中时,它不会加载nib文件,直到nib文件被实际显示。因此控制器在nib文件中定 义的内容,例如label,可能还没有实例化。此时label可能只是一个nil指针,需要额外使用代码中实现的属性来存储信息。可以在 viewWillAppear:方法中对niv实例化的对象属性进行设置。

    4, initWithCoder是一个类在IB中创建但在xocdde中被实例化时被调用的.比如,通过IB创建一个controller的nib文件,然后在xocde中通过initWithNibName来实例化这个controller,那么这个controller的initWithCoder会被调用。

    5,在使用IB的时候才会涉及到此方法的使用,当.nib文件被加载的时候,会发送一个awakeFromNib的消息到.nib文件中的每个对象,每个对象都可以定义自己的awakeFromNib函数来响应这个消息,执行一些必要的操作。


    纸上得来终觉浅,绝知此事要躬行
  • 相关阅读:
    去除空格
    常见的Js
    无法访问 ASP 兼容性模式
    asp.net mvc 笔记一
    PowerDesigner如何将设计的表更新到数据库中
    微信小程序基于第三方websocket的服务器端部署
    C# Linq GroupBy 分组过滤求和
    一步一步教你用c# entity framework6 连接 sqlite 实现增删改查
    执行指定iframe页面的脚本
    vs2017 x64 ibatis.net 平台调用 Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342 x64
  • 原文地址:https://www.cnblogs.com/asheng/p/5174478.html
Copyright © 2011-2022 走看看