UIStoryboard的使用

1.显示故事版中指定的视图控制器:

(1)获取故事版
+ ( UIStoryboard *)storyboardWithName:( NSString *)name bundle:( NSBundle *)storyboardBundleOrNil;

(2)获取故事版中的视图控制器
- ( id )instantiateInitialViewController;
- (id)instantiateViewControllerWithIdentifier:(NSString *)identifier;

2.连线(UIStoryboardSegue
连线是故事版文件中视图控制器切换效果。

(1)自定义切换效果
从一个视图控制器到另一个视图控制器连线时,单击连好的线,打开特性查看器,可以设置不同的切换效果,其中可以设置自定义切换效果Custom,然后提供自己处理自定义切换效果的UIStoryboardSegue的子类。具体实现如下。
创建一个 UIStoryboardSegue的子类并覆盖方法 - ( void )perform,在此方法中实现自定义切换动画,如:
- ( void )perform {
   
   
UIViewController *source = ( UIViewController *) self . sourceViewController ;
   
UIViewController *destination = ( UIViewController *) self . destinationViewController ;
   
CGRect frame = source. view . frame ;
   
CGRect originalframe = source. view . frame ;
    frame.
origin . y = frame. size . height ;
   
    [
UIView animateWithDuration :0.3 animations :^{
        source.
view . frame = frame;
        source.
view . alpha = 0;
       
    }
completion :^( BOOL finished) {
       
        destination.
view . frame = frame;
        destination.
view . alpha = 0;
        [[source.
view superview ] addSubview :destination. view ];
       
        [
UIView animateWithDuration :0.3 animations :^{
            destination.
view . frame = originalframe;
            destination.
view . alpha = 1;
        }
completion :^( BOOL finished) {
            source.
view . alpha = 1;
            source.
view . frame = originalframe;
            [destination.
view removeFromSuperview ];
           
            [source.
navigationController pushViewController :source animated : NO ];
        }];
       
    }];
}
更多切换效果 可参照:https://github.com/jsmecham/DoorwaySegue

(2)触发连线
故事版能够基于视图控制器的特定事件(如:按钮的点击事件)自动触发连线,我们也可以通过编程触发连线。
// 编程的方式触发连线
- ( void )performSegueWithIdentifier:( NSString *)identifier sender:( id )sender

(3)连线执行时,会在源视图控制器中调用
- ( void )prepareForSegue:( UIStoryboardSegue *)segue sender:( id )sender
这时覆盖此方法,并通过 segue. sourceViewController获取源视图控制器, segue. destinationViewController获取目标控制器,此时可以设置目标控制器的一些初始化值,以及代理.

3.回退到之前的视图控制器

(1)第一步,在视图控制器中实现IBAction方法(接收UIStoryboarySegue对象作为参数)如下所示:
- ( IBAction )unwindMethod:( UIStoryboardSegue *)segue {
   
}
(2)第二部,进入Storyboard文件,将视图控制器中的事件,跟它的Exit对象连接起来。

4.使用故事版来实现表视图

使用故事版可以构建两种类型的表视图:不需要特殊类提供数据源的静态表;含有绑定模型中数据的原型单元格。

(1)静态表
拖曳一个UITableViewController并选择Table View,然后在特性查看器中选择Static Cells,可在故事版中创建静态表,如下图:
静态单元格适用于创建设置界面,只能为UITableViewController生成的表视图创建静态单元格,作为UIViewController视图的子视图添加的表视图无法创建。

(2)原型单元格
原型单元格跟自定义表视图单元格类似,不过不是在单独的nib文件中创建原型单元格,然后再在数据源方法cellForRowAtIndexPath:中加载它们,而是在IB的故事版上创建,并且只要在数据源方法中设置一下数据就OK了。

最后,可通过创建多个故事版来解决合并冲突的问题

你可能感兴趣的:(UIStoryboard的使用)