代码: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. AtCoder Regular Contest 103 题解

    C-/\/\/\ #include<algorithm> #include<iostream> #include<cstdlib> #include<ioma ...

  2. [JSOI2008]小店购物 & bzoj4349:最小树形图 最小树形图

    ---题面(洛谷)--- ---题面(bzoj)--- 其实是同一道题,,,样例都一模一样 题解: 一开始看想了好久,,,还想到了最短路和最小生成树,,然而写的时候才意识到最小生成树应该要用无向边 其 ...

  3. BZOJ1597 & 洛谷2900:[USACO2008 MAR]Land Acquisition 土地购买——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1597 https://www.luogu.org/problemnew/show/P2900 约翰准 ...

  4. POI 2018.10.22

    [POI2015]ODW 喵锟讲过.分块. N>=blo,那就暴力倍增往上跳.O(N/blo*logN) N<blo,预处理,f[i][j]表示,i往上跳,每次跳j步,到根节点为止,权值和 ...

  5. mysql语句进阶

    1.null mysql> create table worker(id int not null,name varchar(8) not null,pass varchar(20) not n ...

  6. GSM之AT操作命令详解20160615

    因工作接触到GSM模块,所以收集整理了一下关于操作GSM模块的AT命令的资料: 1.AT的历史与应用 1.1 AT的历史AT命令集是由拨号调制解调器(MODEM)的发明者贺氏公司(Hayes)为了控制 ...

  7. iOS更改项目名称的详细步骤

    http://www.cocoachina.com/ios/20150104/10824.html

  8. im-switch -s ibus错误:Error: no configuration file "ibus" exists.

    在虚拟机上安装Ubuntu14.04 后安装ibus输入法,万万没想到在切换输入法的时候居然出错了! 无语了,再网上查了一下,这个错误出现的还是比较少的. 先说Ubuntu输入法(ibus)安装的一般 ...

  9. 洛谷2944 [USACO09MAR]地震损失2Earthquake Damage 2

    https://www.luogu.org/problem/show?pid=2944 题目描述 Wisconsin has had an earthquake that has struck Far ...

  10. 洛谷2115 [USACO14MAR]破坏Sabotage

    https://www.luogu.org/problem/show?pid=2115 题目描述 Farmer John's arch-nemesis, Farmer Paul, has decide ...