我正在寻找一种方法来重用一个 .xib 文件中的内容并将其加载到多个其他 .xib 文件中。原因是这样我可以为应用程序中的所有页面重复使用部分设计。我知道在 android 编程中,您可以通过在设计 .xml 文件中写入 include nameOfFile 来做到这一点。
我尝试过以下方法:
创建了一个链接到 .h 和 .m 文件的 .xib 文件,它们都称为 ActionBarViewController .xib/.h/.m。
之后,我在 ActionBarViewController.m 文件中设置背景颜色。
self.view.backgroundColor = [UIImage gbBlue];
我的 ActionBarViewController 的 .h 看起来像这样:
@interface ActionBarViewController : UIViewController {
}
@property (retain, nonatomic) IBOutlet UIView *actionBarView;
@end
然后我将 ActionBarViewController 包含在我的 mainMenu.m 中(这是我想要将 ActionBar View 加载到的 .xib 的 .m 文件)。
现在在我的 mainMenu.m 的 viewDidLoad 中我尝试像这样加载它。
ActionBarViewController *actionbarViewController = [[ActionBarViewController alloc] init];
[self.view addSubview:actionbarViewController.actionBarView];
[actionbarViewController release];
我也尝试过:
ActionBarViewController *obj=[[[NSBundle mainBundle] loadNibNamed:@"ActionBarViewController" owner:self options:nil]objectAtIndex:0];
obj.actionBarView.frame=CGRectMake(70, 160, 180, 80);
[self.view addSubview:obj.actionBarView];
[obj release];
但是它不起作用,所以我错过了什么吗?或者这在 iOS 编程中根本不可能实现?
最佳答案
如果您有主菜单的 xib
,并且您正在尝试加载该 xib
中定义的特定 View
。让我们将其命名为 containerView
。将该 containerView
与您的主 .m 文件 init
链接到 viewDidLoad
中的 ActionBarView
。使用 ActionBarView
中的一些类方法加载 nib
文件并返回结果。然后将其作为 subview
添加到您的 containerView
中。
//viewDidLoad
ActionBarView *actionBar = [ActionBarView getInstance];
[containerView addSubview:actionBar]
//Class method getInstance in ActionBarViewController
ActionBarView *actionBar = [[[NSBundle mainBundle]
loadNibNamed:@"ActionBarViewController"
owner:nil options:nil] lastObject];
if ([actionBar isKindOfClass:[ActionBarView class]])
return actionBar;
else
return nil;
ActionBarView
是一个UIView
关于iOS,如何将 .xib 加载到另一个 .xib 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21303598/