Chinaunix首页 | 论坛 | 博客
  • 博客访问: 713564
  • 博文数量: 102
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1748
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-23 15:42
个人简介

寻找严肃、沉默和专注的力量。

文章分类

全部博文(102)

文章存档

2015年(26)

2014年(8)

2013年(68)

分类: iOS平台

2015-03-14 17:14:26

简介    
    场景转换在应用中是非常常见的,让用户在一个视图控制器内操作,能够实例化并显示另一个视图控制器,需要创建一个在两者之间相连的segue(转场)。比如导航控制器里面,某个场景中的操作可以触发转场去加载并显示另一个场景,转场可以将下一个控制器自动推入导航栈。

说明
   

 
   Xcode6之前Storyboard里面的几种segue区别及视图切换:push、modal、popover、replace和custom可参考:
    
Xcode6中segue取消原push和modal(deprecated),可以查看官方文档说明:https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/chapters/StoryboardSegue.html
    新增方法show和present Modally一般可以满足我们的使用需求
    

    Show

    根据当前屏幕中的内容,在master area或者detail area中展示内容。

    例如:如果app当前同时显示master和detail视图,内容将会压入detail区域。

    如果app当前仅显示master或者detail视图,内容则压入当前视图控制器堆栈中的顶层视图。


    Show Detail

    在detail area中展现内容。

    例如:即使app同时显示master和detail视图,那么内容将被压入detail区域

    如果app当前仅显示Master或者detail视图,那么内容将替换当前视图控制器堆栈中的顶层视图。


    Present Modally

    使用模态展示内容。属性面板中提供presentation style (UIModalPresentationStyle)与 transition style (UIModalTransitionStyle)两种选项


    Present as Popover

在某个现有视图中的锚点处使用弹出框展示内容。这个选项可指定显示在弹出框视图一边上的箭头可用方向,同时也是指定锚点视图的一个选项。

  (翻译来自网友)


Storyboard创建segue
   
按住鼠标右键,将鼠标指针从一个单元样本拖到新场景上,鼠标悬停时将看到整个场景会高亮显示,表示可以连接了。释放鼠标右键并选择弹出的浮动菜单中Selection Segue位置的show选项。创建segue意味着,只要用户轻点单元样本,另一端相连的视图控制器便会分配内存空间并准备切换。

动态执行segue

     在Storyboard中建立的segue,是直接跳转的,不方便添加额外的条件判断,如果要做登陆之类的功能,必须动态执行segue操作
    
首先在Storyboard中建立segue,不从按钮等控件建立,而是从ViewController建立,必须指定Identifier,建立完毕后,跳转执行    
    [self performSegueWithIdentifier:@"segueXXX" sender:self];
    利用Identifier指定要执行的segue

利用segue传递数据
    比如想把数据NSString *aData从AController传到BController,则在BController中创建一个NSString recvData的property,然后在AController添加方法

点击(此处)折叠或打开

  1. - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
  2.     UIViewController *destination = segue.destinationViewController;
  3.     if ([destination respondsToSelector:@selector(setdata:)]) {
  4.         [destination setValue:aData forKey:@"recvData"];
  5.     }
  6.     
  7. }
    在BController的viewDidLoad方法中,可直接查看_recvData值。





阅读(17774) | 评论(0) | 转发(0) |
0

上一篇:ios常见小问题

下一篇:iOS:KVC的概述与使用

给主人留下些什么吧!~~