viewcontroller 各事件的执行顺序说明

今天在用storyboard 写界面开发时遇到一些奇怪的问题。因此记录下用storyboard 布局。以及在代码中使用这些布局应该注意的问题。

/*****************刚学IOS不久,问题幼稚与否,还请各位大神轻虐*******************************/

我的工程界面布局是使用的storyboard 和约束,为了适配方便。

习惯在viewDidLoad中对控件进行一些自定义操作。但是发现,即使页面控件以及与头文件中的IBoutlet 连线了。在viewDidLoad函数中读取这些控件时,返回的都是nil。一开始很是郁闷,找不到原因,猜测是viewDidLoad函数中,storyboard界面中的控件还没初始化。因此查阅了viewController的常见的方法。最终把对控件的一些自定义修改写在了函数viewDidLayoutSubviews里。即等到控制器管理的视图把它包含的所有子视图排列完成后,再进行一些自定义的修改。

viewController中各事件有执行先后顺序,因此不同的函数中适合做不要的事情,对此做一个总结。

initWithNibName:bundle:

初始化UIViewController.也可以自定义init方法。但是在写自定义init方法。先要调用[super initWithNibName:nil bundle:nil]。

loadView

访问viewcontroller的view时,如果view为nil会自动调用该方法。
viewDidLoad       当该控制器管理的视图被装载完成后,系统自动调用该方法。重写该方法时要先调用[super viewDidLoad]。
viewWillAppear   当该控制器管理的视图将要显示出来时,系统自动调用该方法。
viewDidAppear 当该控制器视图的视图显示出来后,系统自动调用该方法。
viewWillLayoutSubviews 当该控制器管理的视图将要排列它包含的所有子视图时,系统自动调用该方法。
viewDidLayoutSubviews   当该控制器管理的视图把它包含的所有子视图排列完成后,系统自动调用该方法。
ViewWillDisappear 当该控制器管理的视图将要被隐藏或者将要被移出窗口时,系统自动调用该方法。  

还有就是viewDidDisappear.

那么使用storyboard布局界面时,在viewDidLoad访问空间为nil的问题已经很明显了。因为在storyboard中使用约束来布局。在viewDidLoad函数中,各空间的排列还没完成,自然是访问不到了。

时间: 2024-11-08 23:55:14

viewcontroller 各事件的执行顺序说明的相关文章

JS中事件的执行顺序

项目需求页面一键发布,下面是一个简单demo: html: <button id="send">提交</button> <table id="mytable"></table> js: $(function(){ $('#send').click(function(){ startTime = new Date();//设置开始时间 $.ajax({ type: "GET", url: "

JS中事件的执行顺序和AJAX的异步

之前了解过异步和同步,知道同步是顺序执行,异步是同时执行,但是没有遇到过这种情况,不是很理解,这两天做项目突然遇到了,对这有了一个初步的认识.废话不多说,直接上要求. 1.项目要求:外部调用xml文件,然后JS动态生成下拉菜单,使多个文件同时使用此菜单,方便维护. 如图,下面白色为以前的菜单,但是多个地图都需要写同样的菜单比较麻烦,也不好修改,所以做一个xml文件,存储菜单内容,然后多个地图调用,容易修改,蓝色部分菜单. 2.项目代码:此处我使用的Jquery addMenu(){ $.ajax

页面事件的执行顺序

Page_Init  页面的初始化 Page_Load 页面加载 母版页页面加载 btn_load 按钮加载 btn_click 点击按钮回发 Page_PreRender 页面预呈现 母版页 Page_PreRender btn_PreRender 按钮预呈现 母版页内嵌代码段 子页内嵌代码段

GridView事件DataBinding,DataBound,RowCreated,RowDataBound区别及执行顺序分析

严格的说,DataBinding,DataBound并不是GridView特有的事件,其他的控件诸如ListBox等也有DataBinding,DataBound事件. DataBinding事件MSDN解释:Occurs when the server control binds to a data source.This event notifies the server control to perform any data-binding logic that has been writ

[Log]ASP.NET之HttpModule 事件执行顺序

ASP.Net下的HttpModule是基于事件的处理模型,这使得我们在选择事件监听和处理的时候有更多选择.下面是对HttpModule有关事件被触发的监测: 有关代码如下 using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.

关于js事件执行顺序

关于js事件执行顺序小技巧 js事件执行顺序是js中一个老生常谈的一个话题, 聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件 1.给页面元素绑定事件 a)直接在元素上面加上需要绑定的事件,如 <button type="button" onclick="console.log('111')"></button> 结果如下: 此方法不建议使用,有两方面的原因, 1)此方法绑定的方法必须为一个全局的方法,而通常我们需要绑定的方法都是针对

关于async/await、promise和setTimeout执行顺序

先来一道关于async/await.promise和setTimeout的执行顺序的题目: 1 async function async1() { 2 console.log('async1 start'); 3 await async2(); 4 console.log('asnyc1 end'); 5 } 6 async function async2() { 7 console.log('async2'); 8 } 9 console.log('script start'); 10 set

aspx 的页面事件执行顺序

aspx页面生命周期事件 Page_PreInit 使用IsPostBack属性确定是否是第一次处理该页:创建动态控件:动态设置Theme属性:读取或设置配置文件属性值等 Page_Init 读取或初始化控件属性 Page_Preload 事件在所有回发数据处理之后但在 Load 事件之前引发 Page_Load 读取和更新控件属性 Control events 处理特定事件,如 Button 控件的 Click 事件 Page_PreRender 对页的内容进行最后更改 Page_Unload

看懂此文,不再困惑于javascript中的事件绑定、事件冒泡、事件捕获和事件执行顺序

最近一个项目基于3维skyline平台,进行javascript二次开发.对skyline事件的设计真是无语至极,不堪折磨啊!抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享. (一)事件绑定的几种方式 javascript给DOM绑定事件处理函数总的来说有2种方式:在html文档中绑定.在js代码中绑定.下面的方式1.方式2属于在html中绑定事件,方式3.方式4和方式5属于在js代码中绑定事件,其中方法5是最推荐的做法. 方式1: HTML的DOM元素