博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 中 Storyboard 与 Xib 间控制器跳转 - 简化整理完整版
阅读量:5906 次
发布时间:2019-06-19

本文共 1997 字,大约阅读时间需要 6 分钟。

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

太阳火神的美丽人生 ()

本文遵循“”创作公用协议

、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 跳转

你可能感兴趣的文章
raspi-config Expand root partition to fill SD card 原理
查看>>
maven generating project in batch mode hang
查看>>
Excel与XML相互转换 - C# 简单实现方案
查看>>
远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
查看>>
基础二:javascript面向对象、创建对象、原型和继承总结(下)
查看>>
360. Sort Transformed Array
查看>>
docker使用流程
查看>>
一次解决OOM的经历
查看>>
JavaScript闭包
查看>>
樹莓派初始化安裝配置筆記
查看>>
TouchID本地身份验证
查看>>
android:launchMode小分析
查看>>
大转变,苹果或于明年推出使用 ARM 芯片的 Mac
查看>>
Docker 容器与主机时间同步
查看>>
爬虫基础-http请求的基础知识
查看>>
第十六章:数据绑定(三)
查看>>
antiX 17.4 发布,轻量级 Linux 发行版
查看>>
Java高并发秒杀Api-web 层
查看>>
全网互联之高速通道
查看>>
JVM GC杂谈之理论入门
查看>>