代码:https://github.com/xufeng79x/CreateControllerByXib

1.简介

  UIViewController实例可以通过代码、storyborad或者xib方式来定义,本文介绍如何通过xib的方式来创建。

2.实现步骤

  1.新建工程->新建user interface,名外【MyController】

                                

2.新建继承与UIViewController的类,名为【MyController】保持xib文件名称和类稳健名称一致。

                     

  3.点击xib将按住file owner设定为MyController

          

  

  4.按住control键盘从file's owner拖动到view上点击选择outlet属性。

           

  5.在初始化界面上放置一个button,事件如下:

          

  

- (IBAction)showControllerFromXIB:(id)sender {
    MyController *myController = [[MyController alloc] init];
    [self presentViewController:myController animated:YES completion:nil];
}

  

  6.启动程序后,点击按钮将会显示xib中定义的view。

        

3. 深入研究

  1.场景一:改变viewController类名称,时期与xib文件不一致。

  在上述步骤中,我们定义了与xib文件同名的代码文件,如果两者不同命会怎么样呢?(就名称不一样,其他步骤都一致)

 以下为将按钮事件中的类修改为当前名称的controller的实例初始化。

- (IBAction)showControllerFromXIB:(id)sender {
    MyControllerViewController *myController = [[MyControllerViewController alloc] init];

    [self presentViewController:myController animated:YES completion:nil];

  

  结果:点击按钮后直接黑屏幕了。

            

  2. 场景二:修改xib的file’s owner,时期不指向MyController

    在场景一中隐隐感觉到这个好像和命名还有点关系,接下来我们来再进一步证明这一点。

    将xib中的file's owner保持默认:

        

    将按钮的事件处理中,修改为如下代码:

- (IBAction)showControllerFromXIB:(id)sender {

    MyController *myController = [[MyController alloc] init];

    [self presentViewController:myController animated:YES completion:nil];
}

  结果:

  

结论:1.从xib定义controller的时候类和xib文件名称必须一致。

   2.无论是否设定xib的file's ower值,只要与某个controller类名称一致,则就会让那个controller的view指向当前的xib定义的内容。

   3.file's owner属性只是便于xcode操作而已。

完结。

[How to]如何通过xib来自定义UIViewController的更多相关文章

  1. ASP.NET WebApi通过自定义ControllerSelector来自定义Controller的选择

    在web api中,我们可以通过给Cotroller类添加RoutePrefixAttribute来定义url与Controller之间的映射,但是有时候有一些特殊情况下,我们需要做一些特殊处理来将某 ...

  2. 最好的Kubernetes客户端Java库fabric8io,快来自定义你的操作

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 Kubernetes Java客户端 对于Kubernetes集群的操作,官方提供了命令行工具kubectl,这也是我 ...

  3. 使用 antd 的 form 组件来自定义提交的数据格式

    最近使用antd UI 的表单提交数据,数据里面有的是数组,有的是对象.提交的时候还要去校验参数,让人非常头疼.在我仔细看完文档之后,发现 antd 的 form 组件做的非常不错,这些需求通通不是问 ...

  4. iOS xib传值--定义方法传值

    事件描述: 用xib创建了一个View,里面有按钮,有TableView.我需要将数据在初始化时传递进去,方便TableView来显示信息. 首先想到的是awakeFromNib这个方法(我以为是和V ...

  5. 通过jquery来实现文本框和下拉框动态添加效果,能根据自己的需求来自定义最多允许添加数量,实用的jquery动态添加文本框特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 通过web.config来自定义output caching缓存

    我们服务器有开启缓存功能, 缓存功能可以减少您访问网站时候网站在服务器里面的编译时间, 大大加快您网站的访问速度, 如果您需要对您网站进行频繁更新的话, 您可以考虑暂时将缓存时间减少,或者暂时关闭缓存 ...

  7. sql结合通配符来自定义转义字符

    1.使用   ESCAPE   关键字,定义转义符.在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符.例如,要搜索在任意位置包含字符串   5%   的字符串,请使用:      WHER ...

  8. 《TomCat与Java Web开发技术详解》(第二版) 第三章节的学习总结--利用Context元素来自定义web应用的存储位置

    在学习完第三章后(第三章提供的web应用是helloaapp,我将其放到了tomcat/webapps中),对Context元素的作用理解不深:但是当进入第四章后,发现第四章提供的源码包中也有一个叫h ...

  9. 纯CSS3来自定义单选框radio与复选框checkbox

    单选框(radio)自定义样式 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...

随机推荐

  1. BZOJ3631:[JLOI2014]松鼠的新家——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3631 https://www.luogu.org/problemnew/show/P3258 松鼠的 ...

  2. ZOJ1081:Points Within——题解

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1081 题目大意:给定一个点数为 n 的多边形,点按照顺序给出,再给出 m ...

  3. UOJ228:基础数据结构练习题——题解

    http://uoj.ac/problem/228 参考:https://www.cnblogs.com/ljh2000-jump/p/6357583.html 考虑当整个区间的最大值开方==最小值开 ...

  4. Machine Learning CodeForces - 940F (带修改的莫队)

    You come home and fell some unpleasant smell. Where is it coming from? You are given an array a. You ...

  5. git fatal: 拒绝合并无关的历史的错误解决

    本地初始化的项目 与 github 版本不一致, 导致无法提交 $ git pull origin master 来自 https://github.com/itaken/python-login-d ...

  6. sql service (case when then else end ..... group by)

    1. 原表: courseid coursename score ------------------------------------- 1 java 70 2 oracle 90 3 xml 4 ...

  7. Intellij IDEA 使用jrebel运行spring-boot并实现自动编译进行热部署

    在使用jrebel运行spring-boot的时候,会发现一个很棘手的问题,就是项目不能自动编译,不能自动编译就不能实现热部署.(使用jar包方式运行的时候) 那么我们就要解决自动编译的问题,首先: ...

  8. ELK6.0环境搭建及配置

    ELK环境搭建及配置 ElasticSearch在5.x后的安装和插件的官方执行更好了,head插件官方默认集成在kibana的dev tools里,支持rpm包方式安装,x-pack安装后支持权限及 ...

  9. Django1.5 自定义用户模型(总结)

    Django系统有自带的超级棒的认证机制,但是默认的用户模型有一点捉急,为了自定义用户模型,看了很多相关的文章,这里做一个总结: 你可以先看一下这篇,对Django的用户模型有一个比较全的了解: 来自 ...

  10. js的数据类型--数字

    近期做一些项目的时候发现,自己的js基础还是不够扎实,再看一遍犀牛书,加深自己的理解和印象.所以从这篇文章开始,后面都是关于原生js的一些内容. 这篇文章,我们具体介绍一下js的数据类型其中一种. j ...