代码: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. [洛谷P4721]【模板】分治 FFT_求逆

    题目大意:给定长度为$n-1$的数组$g_{[1,n)}$,求$f_{[0,n)}$,要求: $$f_i=\sum_{j=1}^if_{i-j}g_j\\f_0=1$$ 题解:分治$FFT$博客,发现 ...

  2. 微软TTS语音引擎编程入门

    原文链接地址:http://www.jizhuomi.com/software/135.html   我们都使用过一些某某词霸的英语学习工具软件,它们大多都有朗读的功能,其实这就是利用的Windows ...

  3. React中的高阶组件,无状态组件,PureComponent

    1. 高阶组件 React中的高阶组件是一个函数,不是一个组件. 函数的入参有一个React组件和一些参数,返回值是一个包装后的React组件.相当于将输入的React组件进行了一些增强.React的 ...

  4. 《python核心编程》读书笔记--第18章 多线程编程

    18.1引言 在多线程(multithreaded,MT)出现之前,电脑程序的运行由一个执行序列组成.多线程对某些任务来说是最理想的.这些任务有以下特点:它们本质上就是异步的,需要多个并发事务,各个事 ...

  5. Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) A B 水 搜索

    A. Oath of the Night's Watch time limit per test 2 seconds memory limit per test 256 megabytes input ...

  6. [iptables]iptables 添加log到syslog

    比如iptables本来有这么一条: -A PREROUTING -d 125.65.27.xxx/32 -p tcp -m tcp --dport 11060 -j DNAT --to-destin ...

  7. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心

    [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 457  Solved: 203[Submit][Status][D ...

  8. kubernetes--应用程序健康检查

    版权声明:本文属于原创,欢迎转载,转载请保留出处:http://blog.csdn.net/liyingke112 http://blog.csdn.net/liyingke112/article/d ...

  9. git--------------bug修复流程

    当前所有分支: master:主分支 test:测试分支 zs:开发人员分支 ls:开发人员分支 场景:zs正在开发A模块功能,线上环境产生了一个bug. zs的操作流程(当前分支为zs分支): 1. ...

  10. bug级别分类

    bug级别分类 2014-10-20 10:02 6403人阅读 评论(0) 收藏 举报  分类: SQA(17)  版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   由 ...