视图控制器中的各种的方法

ViewController是每个iOS开发者都在打交道的东西,了解它的生命周期、它各种方法的正确使用和调用会对我们有很大的帮助

控制器的创建

  • 控制器普通创建(与Xib关联或者是纯代码)会调用init:方法。

  • 控制器从Storyboard创建,先调用该控制器的方法initWithCoder:对各个属性进行解码,接着awakeFromNib被调用,并不会调用自定的init:方法

    编译过程中,项目里用到的 SB 文件也会被编译,并以 storyboardc 为扩展名保存在最终的 app 包内。这个文件和 .bundle 或者 .framework 类似,实际上是一个文件夹,里面存储了一个描述该编译后的 SB 信息的 Info.plist 文件,以及一系列 .nib 文件。原来的 SB 中的每个对象 (或者说,一般就是每个 View Controller) 将会被编译为一个单独的 .nib,而 .nib 中包含了编码后的对应的对象层级。在加载一个 SB,并从中读取单个 View Controller 时,首先系统会找到编译后的 .storyboardc 文件,从 Info.plist 中获取所需的 View Controller 类型和 nib 的关系,来完成 UIStoryboard 的初始化。接下来读取对应的某个 nib,并使用 UINibDecoder 进行解码,将 nib 二进制还原为实际的对象,最后调用该对象的 initWithCoder: 完成各个属性的解码。在完成这些工作后,awakeFromNib 被调用,来通知开发者从 nib 的加载已经完毕。 ---来自 王巍博客

控制器中的各个方法

  • 用于初始化 init:initWithCoder:

初始化方法中一般用于对控制器的属性进行初始化或者赋值操作,最好不要编写自定义的init:代码,因为如果视图控制器切换至故事版的话,init:方法将不会被调用

  • 视图的加载 viewDidLoad

在视图层次结构准备就绪之后,视图再被呈现给用户之前会被调用一次,可以在该方法中做一些一次性的操作。

  • 用于接收有关视图的可视性通知 viewWillAppear viewDidAppear viewWillDisappear viewDidDisappear

    • viewWillAppear:
      当视图控制器已经准备好,且视图即将被放入视图窗口时,过渡动画尚未开始,此方法会被调用。
      在这个时刻,视图对用户还是不可见的,不要启动任何视图动画,不会起任何作用。
    • viewDidAppear:
      当视图在视图窗口展示出来,且过渡动画完成后,此方法被调用。
      在这里启动或恢复任何想要呈现给用户的视图动画。
    • viewWillDisappear:
      当视图将要从屏幕上隐藏起来时调用。有可能是其它的视图控制器要接管屏幕,也有可能是该控制器要出栈。
    • viewDidDisappear:
      当视图控制器的过渡动画完成时调用。
  • 用于视图的布局 viewWillLayoutSubviews viewDidLayoutSubviews

视图的布局,在这里可以取得view中的正确尺寸。

合理的使用控制器的各个方法

列举高效使用声明周期中各个事件的例子

  1. viewDidLoad: 查看数据源是否可用。如果可用则更新UI。
  2. 若每次都需要暂时最新的信息,则在viewWillAppear:中更新UI元素。
  3. viewDidAppear:中开始动画,恢复事件,如:视频、音频的播放。
  4. 使用viewWillDisappear:中停止动画
  5. 使用viewDidDisappear:中销毁内存中复杂的数据结构、注销各类的应用事件的通知。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容