从几个不同的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这些视图控制器之一,并要求的东西,而不是加载笔尖直。