Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom

一、视图切换类型介绍
在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的。
在iphone中,segue有:push,modal,和custom三种不同的类型,这些类型的区别在与新页面出现的方式。
而在ipad中,有push,modal,popover,replace和custom五种不同的类型。
modal 模态转换
 
最常用的场景,新的场景完全盖住了旧的那个。用户无法再与上一个场景交互,除非他们先关闭这个场景。
是在viewController中的标准切换的方式,包括淡出什么的,可以选切换动画。
Modalview:就是会弹出一个view,你只能在该view上操作,而不能切换到其他view,除非你关闭了modalview.
Modal View对应的segue type就是modal segue。
*Modal:Transition to another scene for the purposes of completing a task.当user在弹出的modalview里操作完后,就应该dismiss the modal view scene然后切换回the originalview.
push

Push类型一般是需要头一个界面是个Navigation Controller的。
是在navigation View Controller中下一级时使用的那种从右侧划入的方式
*Push:Create a chain of scenes where the user can move forward or back.该segue type是和navigation viewcontrollers一起使用。
popover(iPad only)
 
popover 类型,就是采用浮动窗的形式把新页面展示出来
*Popover(iPad only):Displays the scene in a pop-up “window” over top of the current view.
 
 
*Replace (iPad only):
 
替换当前scene,
Replace the current scene with another. This is used in some specialized iPad viewcontrollers (e.g. split-view controller).
custom

就是自定义跳转方式啦。
*Custom:Used for programming a customtransition between scenes.
在Storyboard中使用自定义的segue类型

一 、简述
Storyboard是你可以用来定义用户界面的一种新的方式,像xib。
与xib不同的是它可以同时管理多个ViewController,而且可以在Storyboard中配置ViewController 之间的跳转关系。
 
二、Storyboard使用
如果你是创建新项目,Xcode模版可以提供一个配置好的Storyboard供你使用。对于其它的应用,使用Storyboard的过程如下:
1、配置应用程序Info.plist文件
添加UIMainStoryboardFile ,值为storyboard的文件名。
删除原来的NSMainNibFile
2、像以前创建xib文件一样创建一个storyboard文件
3、配置 storyboard中的viewController
 
三、Storyboard的创建
            你可以用InterfaceBuilder 去为你的应用程序创建一个Stroyboard,一般来说一个应用使用一个 Storyboard就够了,但是如果你想创建多个也是可以的,只要你愿意。一个 Stroyboard应该至少含有一个ViewController。
            在iPhone中,对于每一个在Storyboard的ViewController都管理着一个scene,每个scene又管理着screen上的东东,但对于iPad来说,多个scene可以同时呈现在一个screen上。你可以从library中拖拽viewController到你的Storyboard上。
            当你想关联两个viewController时,你可以按着control键,用鼠标从一个ViewController中的button,table view cell…拖拽连接到另一个你想跳转到的ViewController,这样就创建了一个segue,不要忘记设置identifier哦。
          
四、 Scene之间的数据传递
            当你从当前 scene中触发一个segue的时候,系统会自动调用prepareForSegue:sender:这个方法。如果你想从一个界面切换到里另一个界面的时候传递数据,你应该override这个方法。
A---》B
想把数据  NSString A_data   从AController传到BController,则在BController中 
@property 一个NSString data
然后在AController中添加方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"The segue id is %@", segue.identifier );
    UIViewController *destination = segue.destinationViewController;  
    if ([destination respondsToSelector:@selector(setData:)])
    {
        [destination setValue:@"这是要传递的数据" forKey:@"data"];
    }   
}
之后,Bcontroller中的data属性,就接收到数据了。
 
五、ViewController之间的跳转
            1、如果在 Storyboard中当前的 ViewController和要跳转的ViewController之间的segue存在,则可以执行performSegueWithIdentifier:sender:这个方法实现跳转。
            2、如果目标ViewController存在Storyboard中,但是没有segue。你可以通过UIStoryboard的instantiateViewControllerWithIdentifier:这个方法获取到它,然后再用你想要的方式实现跳转,如:压栈。
            3、如果目标ViewController不存在,那就去创建它吧。

【Xamarin 开发 IOS --IOS 页面导航概念Segue】相关推荐

  1. Dokuwiki辅助功能开发-命名空间下页面导航

    Dokuwiki辅助功能开发-命名空间下页面导航 <php> $pinfo = pageinfo();//获取pageinfo函数返回的当前页面信息数组 $mdir = dirname($ ...

  2. 微信小程序开发实战(页面导航)

    @作者 : SYFStrive @博客首页 : HomePage

  3. iOS开发UINavigation系列四——导航控制器UINavigationController

    iOS开发UINavigation系列四--导航控制器UINavigationController 一.引言 在前面的博客中,我么你介绍了UINavigationBar,UINavigationIte ...

  4. C#使用Xamarin开发可移植移动应用(1.入门与Xamarin.Forms页面),附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 什么是Xamarin? Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单. Xamarin的产品简化了针对多种平台的 ...

  5. iOS系统中导航栏的转场解决方案与最佳实践

    背景 目前,开源社区和业界内已经存在一些 iOS 导航栏转场的解决方案,但对于历史包袱沉重的美团 App 而言,这些解决方案并不完美.有的方案不能满足复杂的页面跳转场景,有的方案迁移成本较大,为此我们 ...

  6. 视频教程-从零开发一个iOS企业级项目实战之我的云音乐视频 教程-iOS

    从零开发一个iOS企业级项目实战之我的云音乐视频 教程 任苹蜻,爱学啊创始人 & CEO,曾就职于某二车手公司担任Android工程师后离职创办爱学啊,我们的宗旨是:人生苦短,我们只做好课!熟 ...

  7. iOS之页面布局-踩坑的原由

    iOS之页面布局 原文请点击 在<iOS 7 UI Transition Guide>中有在<iOS 7 UI Transition Guide>的Bar and Bar Bu ...

  8. Xamarin 从零开始部署 iOS 上的 Walterlv.CloudKeyboard 应用

    本文将告诉大家如何从零开始在 iOS 上部署 Walterlv.CloudKeyboard 应用.这个 Walterlv.CloudKeyboard 应用是一个云输入法应用,在 GitHub 完全开源 ...

  9. 用HTML5/CSS3/JS开发Android/IOS应用

    现在人人都想成为安卓/IOS应用开发工程师.其实,安卓/IOS应用可以用很多种语言来实现.由于我们前端开发工程师,对HTML5/CSS/JavaScript的网络编程已经相当熟悉了.所以,今天大家将会 ...

最新文章

  1. VUE 框架添加全局公共方法 , 保留小数点后两位
  2. Vue之vue-cli安装与简单调试
  3. DFS--POJ 1190 生日蛋糕
  4. 飞鸽传书转载:老板的忠告
  5. nginx配置目录,nginx配置文件的所在位置,nginx查看已启动的程序
  6. ECSHOP中添加自定义lbi文件
  7. 【恋上数据结构】图代码实现、最小生成树(Prim、Kruskal)、最短路径(Dijkstra、Bellman-Ford、Floyd)
  8. 服务网与Kubernetes上的Istio分5步
  9. sql统计各科成绩大于平均分的人_SQL第三关:汇总分析
  10. Turbo码编码举例计算
  11. SharePoint常用CAML查询语法及举例
  12. juns java,Java中的基本數據類型
  13. 杀毒软件可以查杀所有计算机病毒吗,杀毒软件可以查杀所有病毒吗
  14. Java实现合成图片
  15. 《中国睡眠研究报告2022》:被调查大学生睡前不看手机的不足3%
  16. 视频号如何引流?怎样利用视频号引流?视频号引流的方法和技巧
  17. organization --form 表单中organization 数据来源
  18. 考研数据结构之串的基础知识
  19. cad怎么转换成pdf格式
  20. 落原:意甲四豪门“七剑”比拼zz

热门文章

  1. 腾讯开工日1.5亿美元领投Reddit,美国贴吧最新估值30亿美元
  2. 与神经网络相比,你对P图一无所知
  3. 高达大战分晓!日本机器人先赢后输,遭电锯切割惨惨惨 | 附高清完整视频
  4. xml配置javaBean的IOC实现示例
  5. Windows下安装并启动mongodb
  6. 一个优雅地探索相关性的新可视化方法
  7. android之AlarmManager 全局定时器
  8. NSMapTable、NSHashTable与NSPointerArray的封装
  9. Objective-c 中 nil, Nil, NULL和NSNull的区别
  10. maven-dependency-plugin (goals copy-dependencies, unpack) is not support解决办法