从几个不同的UIViewControllers加载NIB文件中的视图

时间:2010-08-19 16:42:31

标签: iphone uiviewcontroller ios nsbundle

我一直在使用此site

上找到的方法成功加载Nib文件中的视图
[[NSBundle mainBundle] loadNibNamed:@"YourNibName" owner:self options:nil];

问题在于,因为我们必须设置文件所有者,所以此nib文件将“附加”到此视图控制器。这个视图是UITableViewCell的子类,我想从几个不同的vc加载这个nib文件。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:2)

nib只是一个模板,您可以一遍又一遍地加载它。

如果使用iOS4,您可能需要查看UINib,这样可以提高重复nib加载的性能。

答案 1 :(得分:0)

我将提出两个选择:

  • 使用单个@property (nonatomic, retain) IBOutlet id mainObject;和名为loadNibNamed:bundle:的方法创建一个类NibLoader。然后,做MyView * v = [[NibLoader loadNibNamed:"MyView" bundle:nil] mainObject];。 (GCC 4.0属性访问错误意味着[...]。mainObject会调用[...]两次;它已在4.2中修复。)
  • 创建@protocol MyNibOwner @property (nonatomic, retain) IBOutlet MyView * myView;,并将文件的所有者类更改为id<MyNibLoader>NSObject<MyNibLoader>

答案 2 :(得分:-1)

讽刺的是,笔尖应该只有一个控制器。我可能会做的是创建一个新的UIViewController子类来控制你的这个nib中的东西,然后每当你想要nib中的东西时,创建其中一个视图控制器并询问 it for stuff,而不是直接加载nib。