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了。
最后,可通过创建多个故事版来解决合并冲突的问题