从几个不同的UIViewControllers从NIB文件加载视图
我一直在使用本网站上的方法成功地从Nib文件加载视图
[[NSBundle mainBundle] loadNibNamed:@"YourNibName" owner:self options:nil];
问题是,因为我们必须设置文件所有者,这个笔尖文件变成“附加”到这个视图控制器。 这个视图是UITableViewCell
子类,我想从几个不同的vc中加载这个nib文件。 谢谢你的帮助。
我将介绍两个选项:
- 用一个@property
@property (nonatomic, retain) IBOutlet id mainObject;
创build一个类@property (nonatomic, retain) IBOutlet id mainObject;
和一个名为loadNibNamed:bundle:
的方法)。 然后,做MyView * v = [[NibLoader loadNibNamed:"MyView" bundle:nil] mainObject];
。 (GCC 4.0属性访问错误意味着mainObject会调用两次;在4.2中已经修复。 - 创build
@protocol MyNibOwner
它有@protocol MyNibOwner
@property (nonatomic, retain) IBOutlet MyView * myView;
,并将文件的所有者类更改为id<MyNibLoader>
或NSObject<MyNibLoader>
。
笔尖只是一个模板 ,你可以反复加载它。
如果使用iOS4,您可能需要查看UINib,这可以提高重复的笔尖加载的性能。
在笔尖上,一个笔尖应该可能只有一个控制器。 我可能会做的是创build一个新的UIViewController
子类,控制你的这个笔尖的东西,然后当你想要的东西在笔尖,创build这些视图控制器之一,并要求它的东西,而不是加载笔尖直。