main.storyboard里面通过拖动创建的所有控件都是一个对象,这些对象都有对应的类,比如按钮的类是UIButton,视图View的类是UIView。我们把我们拖动的控件(比如视图)绑定到我们自定的类,则这个控件对象就是由我们自定义的类创建的对象,如果不指定类,那么就是系统默认的类。
同理,storyboard对应一个类,创建项目的时候,系统把main.storyboard控制器对象指定为ViewController类的实例,当然我们也可以定义其他控制器指向main.stroyboard。这样main.storyboard就是我们指定控制器的对象
每一个控制器都有一个自己的view视图,其他控件添加到该视图之上,控制器可以通过[self.viewviewWithTag:]来获取指定tag的控件,或者给控件托线到控制器当中,这样控制器就有一个成员属性,及该控件(同样可以这样理解,控制器定义的成员属性,控件类型是weak,在代码当中并没有赋值,当时通过托线的方式指向了一个控件,这样就有了值。也同样说明了stroyboard中控件都是对象,只是控制器没有指针只指向。只是间接拥有)
对 main.storyboard的理解
1、main.storyboard中的结构大致是这个样子
目前我们学过的有SZViewController,MyView,MyLabel,MyButton,MyTextField(视图上的名字),这些在storyboard中可以看见的都是对象
2、比如SZViewController这个对象,他是通过ViewController这个类创建的(项目创建的时候指定该类,本人比较懒,没有建一个属于自己的控制器)。为什么说是通过该类创建的呢,因为我们指定了该类,如果不指定,默认是UIViewController。
3、程序启动的时候会根据info.plist文件找到Main.storyboard,程序加载storyboard的过程是如何实现的呢
加载main.storyboard底层做什么事情
1.创建UIWindow对象
2.加载storyboard,创建storyboard中的控制器
3.把新创建的控制器作为窗口的根控制器,让窗口显示在屏幕上
注意:窗口要显示出来,必须保证设置尺寸,避免销毁
窗口的显示makeKeyAndVisible
4、每一个控制器拥有一个自己的视图,因为UIWindow仅仅提供的是绘画支持,而UIView才是提供绘画的画板
而且控制器自己的视图是强引用
@property(nonatomic,retain)UIView *view;
图中的MyView也是一个对象,是属于SZViewController的