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


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