关闭

自定义UIViewController与xib文件关系深入分析

330人阅读 评论(0) 收藏 举报

from:http://www.cocoachina.com/bbs/read.php?tid=38766&page=2


自定义UIViewController与xib文件关系深入分析

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


现在如果我们需要用这个刚加入的自定义UIVewController,可以如下方式定义:
CustomViewController* customViewController = [[CustomViewController alloc] initWithNibName:nil bundle:nil]; 
你可以看现第一个传数是nil, 对没错,传nil也是可以的。因为如果系统发现是nil的话,会在工程的bundle里找与CustomViewController同名的xib文件,因为模版生成的正好名字相同,所以能够正确加载xib文件。
第二种方法:
CustomViewController* customViewController = [[CustomViewController alloc] init]; 
在这儿我们只是简单的初始化,也能正解加载相应的xib文件,因为他们名字是相同的。
如果xib的名了与类的名字不同呢?
如果不同那么我们就不能用上面的两种方法,必须显示指明xib的名字,如:
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,如:
testTableView *tableView = [[[testTableView alloc] initWithNibName:nil bundle:nil] autorelease]; 
self.window.rootViewController = tableView;

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:169705次
    • 积分:2637
    • 等级:
    • 排名:第14721名
    • 原创:19篇
    • 转载:223篇
    • 译文:0篇
    • 评论:15条
    最新评论