iOS viewController geekband

@开发模型:

MVC    Model-View-Controller  :模型-视图-控制器.(本节主讲)  开始时间 1979.Xero PARC

MVP    Model-View-Presenter    :  模型-视图-表示器.            开始时间 2004.Martin Fowler 

MVVM  Model-View-ViewModel  :  模型-视图-视图模型     开始时间 2005.John Gossman


@viewController 

iOS viewController geekband_第1张图片
viewConteroller

@如何看页面层次

RUN(运行程序)后,点击标题栏

iOS viewController geekband_第2张图片
点解后进入
iOS viewController geekband_第3张图片
分离页面显示

@创建 rootViewController

iOS viewController geekband_第4张图片

@取得view

iOS viewController geekband_第5张图片


*关于自动load view(网上转)

什么时候执行的 loadView 和 viewDidLoad

一般在初学时,不会用到太复杂的(因为我也是新手),会发现是在这个 ViewController 被设置为 visible 时执行的这两个方法。

永远不要主动调用 loadView 方法

ViewController 会在 view 的属性被请求且当前 view 为 nil 时调用 loadView。

如果你是用 xib 创建 view 并初始化 ViewController,意味着你要使用initWithNibName:bundle: 方法,则不要覆盖 loadView 方法。

如果你是手动创建 view,就要覆盖该方法。

永远不要在覆盖 loadView 方法时使用 [super loadView]

loadView 方法是查看你有木有 xib,有的话就用 xib 加载基本信息,木有的话就会创建一个空白的 UIView,然后把它作为这个 ViewController 的 view。

所以你覆盖这个函数的时候,也按照这个方式是实现就好了。只不过你不是创建一个空白的 UIView,那也没有意义。你创建一个你想要的 UIView,一定要注意这个 UIView 实例必须是给这个 ViewController 独享的(不能被其他实例共享),否则会出问题的。

在 loadView 中实例化 view,在 viewDidLoad 中自定义 view

你只需要在 loadView 时创建 view,不要对它做什么自定义的。

在内存紧张时,程序会调用 viewDidUnload 来释放内存,这个方法是与 viewDidLoad 相对的。当程序内存不那么紧张,且需要用到这个 ViewController 时,则会再次调用 viewDidLoad。

viewDidLoad 和 viewDidUnload 中的操作是相对的。


*关于initWithNibName 制定的nib

细节与其他的不同

1)init只是加载就行,有没有xib无所谓;

但是initWithNibName需要xib文件,如果该文件不存在则报错

2)initWithNibName要加载的xib的类为我们定义的视图控制器类

loadNibNamed要加载的xib的类为NSOjbect。

3)加载方式不同

initWithNibName方法:是延迟加载,这个View上的控件是 nil 的,只有到 需要显示时,才会不是 nil

loadNibNamed方法:即时加载,用该方法加载的xib对象中的各个元素都已经存在。

@多个Viewcontroller

iOS viewController geekband_第6张图片

@生命周期


iOS viewController geekband_第7张图片

上图不能理解可以看下图


iOS viewController geekband_第8张图片

还有下图


iOS viewController geekband_第9张图片

你可能感兴趣的:(iOS viewController geekband)