iOS新手入门常见问题2-UITableViewController转场与反向转场及其数据传递

2016年05月26日 iOS 暂无评论 阅读979次

iOS新手入门常见问题2-UITableViewController转场与反向转场及其数据传递

转场时传递数据给下一个画面

转场也就是画面A到画面B的跳转,也就是ViewController场景的更换。

这个很容易,基于StoryBoard的先进技术,鼠标拖拽分分钟搞定的事情。

如果想给下一个ViewController传递一些数据,就要稍稍敲一行代码了。请看:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    SencondUIViewController *destVC = segue.destinationViewController;
    destVC.valueFromSrc = [something];
} 

就是这几行代码就把下一个ViewController中需要从当前ViewController获得数据设置了。

unwind 反向转场

实例场景描述:

画面A 要跳转到 画面B

画面B中一个关闭按钮,点击后返回画面

从画面A到画面B的跳转在StoryBoard上拖拽,选择segue为pop的那种。

在画面B上点击关闭按钮返回画面A时就要用到反向转场这个东西了。

首先在画面A的ViewController类中要加一个类似下面的方法

(IBAction)unwindMethod:(UIStoryboardSegue *)segue {
} 

仅仅这样一个空方法就行,里面不用具体实现什么逻辑。

在画面B的StoryBoard上,选择关闭按钮,从用鼠标拖拽到ViewController顶部那三个按钮的最后一个Exit上,鼠标放开后会看到在画面A对应的ViewController类增加的反向转场的unwindMethod:方法,勾选即可。

这样就实现了反向转场的基本功能。

反向转场时数据的返回

继续看上面的那个例子,画面B中有某操作,点击关闭按钮回到画面A时,画面A还想知道画面B操作的具体内容。

也就是画面B反向转场到画面A时要带回一些数据给画面A。

这时就要用到刚才写的那个空方法了。在这里必须做一些接收数据的逻辑。

假设画面B中对应的ViewController类里有一个int类型数据要返回给A。

我先把最终代码写出来在解释。

(IBAction)unwindMethod:(UIStoryboardSegue *)segue {
    PageBViewController *srcVC = [segue sourceViewController];
    int valueFromB = srcVC.returnValue;
} 

这样就把画面B中的返回数据给了画面A。

当然实际项目中还要添加一些判断的,例如:反向转场的identifier要给一个字符串,判断是不是我们要的那个转场,还有判断sourceViewController是不是PageBViewController类的实例等。

关闭当前ViewController

这个和转场没有神马关系,但也在这里记录一下吧。 在一个画面中点击了关闭按钮,就关闭当前画面,可以直接拖拽关闭按钮给关联一个IBAction。类似这个样子:

- (IBAction)closeWin:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];  
} 
分享本文至:

WRITTEN BY

avatar
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

欢迎留言




用户登录

sitemap