在有storyboard之前,也就是iOS5之前,多视图之间的连接是通过创建新的xib文件,然后在代码中先alloc一个该类的实例,然后用

- (id)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle

这个函数来将该实例和指定nibName的这个nib文件连接起来。

这种老办法还要在父视图的类中定义一个子视图的类的变量,还要记得在dealloc和viewUnload中释放掉。

新的storyboard特性,提倡在一个storyboard中组织多视图之间的关系。那么在storyboard中创建了一个新的controller,如何跟上一个视图连接上呢?

第一个办法是采用视图之间的连线,也就是segue方法来连接。对于单个视图跳转单个视图,该方法适用。但是对于表视图的多行记录指向多个不同的子视图,本人暂时还不知道怎么操作。只能采用第二种办法了。

第二个办法就是先在storyboard中拖出一个想创建的viewController,将身份检查器中的class指向指定的类。然后在属性检查器中,对该controller的identifier做一个指定。然后把这个controller做出你想要的各种效果后,保存。

接下来,在点击某个控件就触发子视图的代码段中,添加如下代码:

UIStoryboard *board = [UIStoryboard storyboardWithName: @"MainStoryboard" bundle: nil];

childController = [board instantiateViewControllerWithIdentifier: @"DisclosureDetail"];

这两行的意思就是,先指定好是哪一个storyboard,然后在指定的这个storyboard中找出做了identifier标记的controller,再把这个controller实例化一下,赋给即将展现的子视图。

然后通过

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated

这样类似的展示函数,将childController采用各种效果展现出来。

用storyboard来加载指定控制器,要注意以下几点:

1,该控制器不需要事先alloc一个内存空间,最后也不需要在dealloc中释放。直接定义一个该控制器类的指针,指向实例化后的该控制器即可;

2,不需要用if (childController == nil)这样的条件来判断。既然是创建指针,就每点一次触发控件,就调用一次board和instantiate就好。加载nib文件的老做法,是要加上这个if判断条件的,因为有alloc的操作。

通过以上方法,就能把storyboard中创建的一个孤零零的viewController,跟上一级视图连接起来,从而改变老的做法--创建一个xib文件,再去找nibName来连接。

如果该viewController承担了多个不同视图实例的类的话,就可以做到展示表视图中每一行的detail页面的功能。

转载于:https://www.cnblogs.com/pretty-guy/articles/4123277.html

(转)如何从storyBoard中加载其中一个controller相关推荐

  1. 利用classloader同一个项目中加载另一个同名的类_线程上下文类加载器ContextClassLoader内存泄漏隐患...

    前提 今天(2020-01-18)在编写Netty相关代码的时候,从Netty源码中的ThreadDeathWatcher和GlobalEventExecutor追溯到两个和线程上下文类加载器Cont ...

  2. Activity中加载器的总结

    继续总结加载器 加载器可以支持在Activity或片段中异步加载数据,加载器具有以下特征: 可用于每个Activity和Fragment: 支持异步加载数据: 监控其数据源并在内容变化时传递新结果: ...

  3. 在故事板中加载 nib 时 IBOutlet 为 nil

    故事板是在 iOS 5 开始出现的,在此之前我们使用的是 nib/xib.一个故事板支持多个 ViewController,同时可以在这些 ViewController 中进行连接(segue).但是 ...

  4. 在C++中加载TorchScript模型

    在C++中加载TorchScript模型 本教程已更新为可与PyTorch 1.2一起使用 顾名思义,PyTorch的主要接口是Python编程语言.尽管Python是合适于许多需要动态性和易于迭代的 ...

  5. xBIM 实战01 在浏览器中加载IFC模型文件

    系列目录    [已更新最新开发文章,点击查看详细]  一.创建Web项目 打开VS,新建Web项目,选择 .NET Framework 4.5  选择一个空的项目 新建完成后,项目结构如下: 二.添 ...

  6. Spring中加载xml配置文件的六种方式

    Spring中加载xml配置文件的六种方式 博客分类: Spring&EJB XMLSpringWebBeanBlog  因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装 ...

  7. 如何在Author中加载SDE栅格图层?

    如何在Author中加载SDE栅格图层? 版本: ArcIMS  9.1 在Author中加载SDE栅格图层,并保存AXL文件. 过程描述 1.使用ArcIMS Author工具正常的连接ArcSDE ...

  8. 如何找出R中加载的软件包版本?

    本文翻译自:How to find out which package version is loaded in R? I am in a process of figuring out how to ...

  9. pyharm虚拟环境_手把手教你如何在Pycharm中加载和使用虚拟环境

    /1 前言/ 上次小编给大家介绍了Python虚拟环境及其使用和操作教程,没来得及上车的小伙伴,可以戳这个文章进行阅览.这篇文章基于虚拟环境的搭建,也相对比较基础,主要是介绍如何在Pycharm中加载 ...

最新文章

  1. 决策树的C++实现(CART)
  2. 计算机能思考吗?图1专题6:“人脑是计算机吗?”
  3. linux下的打包与压缩
  4. JavaScript Select和Option列表元素上下左右移动
  5. android 下滑,Android实现下滑和上滑事件
  6. ob_get_contents()函数的用法
  7. 2017洛谷3月丧病月赛思考记录
  8. arduino 蓝牙示例_,arduino 蓝牙例子,
  9. 守护你一生-守护线程(Java)
  10. 【Unity3D】常用快捷键
  11. YUV格式详解【全】
  12. 【最短路】【spfa】CDOJ1633 去年春恨却来时,落花人独立,微雨燕双飞
  13. 如何在Windows系统上实现共享文件夹
  14. CSS3 低多边形(Low Poly)设计及开发实例 - 简单的字母
  15. android 6g 有必要吗,Android手机6GB内存有必要吗?实测出真知
  16. 取模(余)%运算详解
  17. 计算机图形学--实时光线追踪
  18. AngularJS中ngRouter和uiRouter的区别
  19. 如何通过电感+MOS管实现BUCK降压和Boost升压
  20. c语言患者住院管理系统,住院系统-中小医院医疗套装软件管理系统_九明珠信息科技...

热门文章

  1. “智慧城市”背后的安全隐患
  2. ****CI框架源码阅读笔记7 配置管理组件 Config.php
  3. 更改UISwitch大小
  4. Hadoop Pipes编程之C++实现WordCount
  5. Android的一些属性使用
  6. .NET 4.5 基类库中的新增功能
  7. 第1期 | IOST开发者激励计划任务更新
  8. 透过国外初创公司看高精度地图难题
  9. React使用Styled-Componets来添加样式
  10. js bom window对象