storyboard和xib使用总结

视图控制器的可视化管理工具storyboard和xib

1. storyboard

storyboard的作用是可以把所有的viewController以及其管理的view都展示出来,并且用线和箭头表明他们之间的跳转关系。

需要在代码中使用storyboard中的某个controller时,需要先获取storyboard,然后再通过storyboard获取其中某个controller的一个实例。具体要获取哪个controller是通过controller的唯一标识来确定的(在Interface Builder中叫做storyboard ID),所以要记得为controller设定一个storyboard ID。
获取storyboard的方法:+storyboardWithName:bundle:
获取storyboard中某个controller的实例:-instantiateViewControllerWithIdentifier:
storyboard里通常会指定一个controller作为入口(initial View Controller),也就是程序打开时呈现的第一个controller,要获取这个controller的实例可以直接使用以下方法:
-instantiateInitialViewController

storyboard中除了可以管理许多的ViewController及其views,其实在storyboard中也可以管理多个子storyboard。这就需要用一个东西来表示各个子storyboard。这东西叫做storyboard reference,在library中看起来是这个样子的
这里写图片描述
把它拖到storyboard中,然后绑定一下它所代表的.storyboard文件,就可以用它来表示某一个storyboard了。

2. segue

segue就是storyboard中标识跳转关系的箭头和线,也就是跳转动作,它已经被封装成一个类UIStoryboardSegue。可以在storyboard中给每个跳转动作加一个标识(identifier)。然后就可以随时在代码中,通过performSegueWithIdentifier:sender:方法,随时执行跳转动作。
当然,要在跳转的时候传值也是有办法的,在跳转之前会执行
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法
在这个方法中可以通过segue.destinationController获取跳转的目标控制器,剩下就是传值的问题了。
这里只需要注意,在使用协议传值的时候,通过segue.destinationController获取的目标控制器的类型默认是UIViewController,此时访问它的delegate是访问不到的,要先将它转换为目标控制器的类型才可以访问到。比如说,目标控制器的类型是SecondViewController。那么要访问它的代理:
SecondViewController secondViewController=(SecondViewController )segue.destinationController;
secondViewController.delegate=self;

3. xib

xib就相当于把storyboard里面的单个controller独立出来在一个文件中管理。要获取xib中的controller的实例,通过方法:
-initWithNibName:Bundle:

你可能感兴趣的:(可视化,xib,segue,storyboard,视图控制器)