iOS 中 Storyboard 与 Xib 间控制器跳转 - 简化整理完整版

简介: iOS 中 Storyboard 与 Xib 间控制器跳转 - 简化整理完整版太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

iOS 中 Storyboard 与 Xib 间控制器跳转 - 简化整理完整版

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。




按以下四种情况分别说明,应该不缺啥了吧!

Xib.controller <=> Xib.controller

Storyboard.controller <=> Storyboard.controller

Storyboard.controller <=> Xib.controller

Xib.controller <=> Storyboard.controller


==========

补充:

Storyboard.controller <=> Storyboard.controller

还有一种特例,就是同一个 Storyboard 中的 controller 间跳转。



=========

再补充:

复用单元的构建,xib 中或 Storyboard 中。


===============================================================

终极简化两步:

一是获取到视图控制器实例,只有两种情况,xib 和 storyboard,代码直接构建不算手画界面部分不在讨论范畴

A、从 xib :AaaViewController *aaaViewController = [[AaaViewController alloc] initWithNibName:@"AaaViewController" bundle:nil];

B、从 storyboard :假设 BbbViewController 视图控制器在 www.storyboard 中,并且其 storyboardid 为 BbbViewController

      UIStoryboard *wwwSB = [UIStoryboard storyboardWithName:@"www" bundle:nil];

      BbbViewController *bbbViewController = [wwwSB INSTANTIATEvIEWcONTROLLERwITHiDENTIFIER:@"BbbViewController"];


    a、简化一:如果当前控制器和要压入的控制器在同一个 storyboard 的话,可以省略构建 UIStoryboard ,直接使用 self.storyboard 替代 wwwSB,

          一个 storyboard 控制器被加载,其 storyboard 被默认保存为属性便于使用。

    b、简化二:当 storyboard 中的视图控制器没有设置 storyboardid 时,而在该 storyboard 中的控制器间使用 segue 进行了关联,那么可以执行 segue 完成跳转,

                        当然 segue 也需要设置 identifier :

         

     [self performSegueWithIdentifier:@"SegueToPersonCenter" sender:sender];

     

     框架内部直接实例化了这个 identifier 对应的 segue 跳转到的视图控制器,那么就会有问题出现了,以往可以自已实例化,然后设置目标控制器的属性,现在怎么办?

     看下面这个回调方法,在跳转前会被执行,给一个设置的机会:

     

     - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {


     }

     这里的 sender 这里的 sender 就是上面的传入参数 sender,也可以在控制器的别名分类中设置私有属性暂存参数,然后在此回调中使用。

    c、简化三:如果是刚开始为了快速构建控制器间的流转,也即草图阶段,不关心细节,那么可能连 segue 都不用,直接在按钮上往目标控制器上一拉选,点按钮就跳转了。


二是将此视图控制器压入导航控制器堆栈或模态呈现

      这个确实没什么可说的,与常规一样,也列一下吧:

      [self.navigationController pushViewController:aaaViewController animated:YES];

      [self presentViewController:bbbViewController animated:YES completion:^{}];


描述完成,基本没有遗漏了吧,关键的东西都在第一步中,视图控制器的实例化与设置上,

相对来讲,越简便的方法越受束缚,越麻烦的方法,给你的自由度越高,苹果在这方面面面俱到了。

可以所有的控制器在一个 storyboard 中,使用 segue 跳转


目录
相关文章
|
4月前
|
Web App开发 开发框架 前端开发
移动端window.open跳转链接时,iOS没有反应的问题
【10月更文挑战第9天】在移动端使用 `window.open` 跳转链接时,iOS 可能无响应,原因是 iOS 的安全策略和弹出窗口阻止功能。解决方法包括:确保在用户交互后触发 `window.open`,将目标设置为 `_self`,使用锚点链接模拟跳转,或利用专门的移动端框架。需综合考虑这些方案以优化用户体验。
1008 61
|
9月前
|
iOS开发
SwiftUI适配iOS16导航控制器引起的闪退
SwiftUI适配iOS16导航控制器引起的闪退
91 0
|
iOS开发
iOS 15后设置导航控制器的导航条背景色无效的问题处理
iOS 15后设置导航控制器的导航条背景色无效的问题处理
526 0
|
移动开发 自然语言处理 JavaScript
移动端H5使用window.open跳转,IOS不生效解决
移动端H5使用window.open跳转,IOS不生效解决
930 2
|
小程序 API Android开发
小程序获取WIFI的API(IOS conncetWifi()自动跳转设置页)
小程序获取WIFI的API(IOS conncetWifi()自动跳转设置页)
458 0
|
iOS开发
iOS app跳转到系统设置页面方法
iOS app跳转到系统设置页面方法
204 0
|
存储 调度 开发者
iOS 子控制器
iOS 子控制器
134 0
|
Swift iOS开发
IOS使用Swift加载Xib文件
IOS使用Swift加载Xib文件
358 0
|
iOS开发
IOS15上纯代码布局之导航控制器的导航条为透明的问题
IOS15上纯代码布局之导航控制器的导航条为透明的问题
244 0
|
iOS开发
IOS使用纯代码布局替换掉默认的storyboard
IOS使用纯代码布局替换掉默认的storyboard
123 0

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 6
    iOS8 中无需开源库的内置功能一览
  • 7
    iOS7应用开发7:自定义视图、手势操作
  • 8
    IOS小工具以及精彩的博客
  • 9
    Facebook SDK(iOS)初学讲解
  • 10
    iOS - Swift NSPoint 位置
  • 1
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    14
  • 2
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    28
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    34
  • 4
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 5
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    23
  • 6
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    143
  • 7
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    235
  • 8
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    90
  • 9
    深入探索iOS开发中的SwiftUI框架
    145
  • 10
    ios样式开关按钮jQuery插件
    60