zoukankan      html  css  js  c++  java
  • 自定义UIViewController与xib文件关系深入分析


    6月14日 上海 OSC 源创会开始报名啦,有很多机械键盘送哦!!!

    用xcode模板向工程加入UIViewController sub class的时候,如果选中了with xib for interface,那么就会向工作加入三个文件(.h .m .xib), 这样生成的三个文件除后缀名后都是一样的名字。

    现在如果我们需要用这个刚加入的自定义UIVewController,可以如下方式定义:

    1
    CustomViewController* customViewController = [[CustomViewController alloc] initWithNibName:nil bundle:nil];
    你可以看现第一个传数是nil, 对没错,传nil也是可以的。因为如果系统发现是nil的话,会在工程的bundle里找与CustomViewController同名的xib文件,因为模版生成的正好名字相同,所以能够正确加载xib文件。

    第二种方法:

    1
    CustomViewController* customViewController = [[CustomViewController alloc] init];

    在这儿我们只是简单的初始化,也能正解加载相应的xib文件,因为他们名字是相同的。

    如果xib的名了与类的名字不同呢?

    如果不同那么我们就不能用上面的两种方法,必须显示指明xib的名字,如:

    1
    CustomViewController* customViewController = [[CustomViewController alloc] initWithNibName:"firstView" bundle:nil]
     
    在这儿我们显示指明是firstView.xib这个文件。

    网上有人说,自定义UITableViewController与自定义UIViewController不一样,即使.h .m .xib文件名一样(除后缀名),也必须显示指明xib的名字。 参看:http://www.outofcore.com/2011/07/ios-development-proper-use-of-initwithnibnamebundle-affects-uitableviewcontroller/

    我在xcode4 SDK 4.3上测试了,结果是一样的,也可以不用指明, 我的测试是直接将自定义的controller赋值给windows.rootViewController,如:

    1
    2
    testTableView *tableView = [[[testTableView alloc] initWithNibName:nil bundle:nil] autorelease]; 
    self.window.rootViewController = tableView;

    不知道是否我测试不够准确,知道的大侠麻烦告诉一下。

    出处:http://blog.csdn.net/favormm/article/details/6736458

    如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。
  • 相关阅读:
    Pandas 学习记录(一)
    python 列表常用操作
    pandas 基本操作
    Numpy np.array 相关常用操作学习笔记
    JS控制背景音乐 没有界面
    Linux Awk使用案例总结
    Yii2 定时任务创建(Console 任务)
    YII2项目常用技能知识总结
    /etc/fstab readyonly 解决办法
    Redis 排行榜 自己简单练习
  • 原文地址:https://www.cnblogs.com/wvqusrtg/p/4531482.html
Copyright © 2011-2022 走看看