自定义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

时间: 2024-10-25 13:21:45

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

加载自定义 cell 的 XIB 文件 的两种方式

自定义单元格如果是使用 IB  方式创建的,则需要手动加载,因为 XIB 上的 cell 不会自动加载 第一种:使用应用程序束 应用程序束 NSBundle:获得工程中所有的资源的路径,相当于当前工程的目录. //获得指定的xib中所有的视图 NSArray * array =  [[NSBundle mainBundle] loadNibNamed:@"ZYTableViewCell" owner:nil options:nil]; 注意通过应用程序束获得返回值是 XIB 文件中所有

iOS UI-团购案例(通过xib文件自定义UITableViewCell)

一.Model 1 #import <Foundation/Foundation.h> 2 3 @interface Goods : NSObject 4 5 @property (nonatomic, copy) NSString *icon; 6 @property (nonatomic, copy) NSString *title; 7 @property (nonatomic, copy) NSString *price; 8 @property (nonatomic, copy) N

IOS中使用.xib文件封装一个自定义View

1.新建一个继承UIView的自定义view,假设类名叫做 MyAppVew #import <UIKit/UIKit.h> @class MyApp; @interface MyAppView : UIView @property(strong,nonatomic) MyApp*app; +(instancetype)appView; @end MyAppView.h #import "MyAppView.h" #import "MyApp.h" @i

xcode5设置自定义*.xib文件为main interface

从xcode5/iOS SDK 7.0开始,新建Single View Application默认界面是*.storyboard文件 如果删除*.storyboard新建自定义的xib文件,然后在Project Settings里设置的Main Interface为xib文件的话,运行时会报NSNullException错误. 用以下方法修改 AppDelegate.h/AppDelegate.m两个文件就可以使用自定义的xib做Main Interface 首先Project Settings

iOS XIB文件和UIViewController关联

1.在Cocoa Touch中创建ZYViewController视图控制器,在User Interface中创建一个view的bluleView.xib文件 2.点击bluleView.xib,然后Option+Command+3打开身份检查器,将默认的NSObject改成ZYViewController 3.在bluleView.xib中,按住Control键把File's Owner图标拖到view图标上,然后选择view,这样就使bluleView.xib和ZYViewControlle

**IOS:xib文件解析(xib和storyboard的比较,一个轻量级一个重量级)

使用Xcode做iOS项目,经常会和Xib文件打交道,因为Xib文件直观的展现出运行时视图的外观,所以上手非常容易,使用也很方便,但对于从未用纯代码写过视图的童鞋,多数对Xib的理解有些片面. Xib文件是什么? A nib file describes the visual elements of your application’s user interface, including windows, views, controls, and many others. It can also

iOS边练边学--xib文件初使用

一.Xib和storyboard对比 *共同点: 1>都用来描述软件界面 2>都用Interface Builder工具来编辑 3>本质都是转换成代码去创建控件 *不同点 1>Xib是轻量级的,用来描述局部的UI界面 2>storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系 二.Xib的加载方法 方法1: NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名

从Xib文件加载UIView的5种方式

在不同的Xib文件中最容易维护的是定义的视图,因此对于从Xib文件中加载UIView来说一个方便的流程是非常重要. 在过去的几年里我发现唯一易于管理创建和维护视图(或者任何界面元素,通常会更多)方式就是从Xib实例化UIView.在界面编辑器里面创建和设计界面远远比使用代码来写界面布局和定义布局常量(尺寸.颜色)甚至一些糟糕的魔法数字来限制元素更加直观. 现在介绍一下我在不同情况下使用过的5种方法 1.简单方式(从Xib加载UIView比较原始的方法) 这种方式仅仅适用于只有一个视图并且没有任何

IOS之UI--小实例项目--添加商品和商品名(使用xib文件终结版) + xib相关知识点总结

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: pointer; position: absolute