gpt4 book ai didi

iOS,如何将 .xib 加载到另一个 .xib?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:15 26 4
gpt4 key购买 nike

我正在寻找一种方法来重用一个 .xib 文件中的内容并将其加载到多个其他 .xib 文件中。原因是我可以在我的应用程序的所有页面上重复使用我的部分设计。我知道在 android 编程中,您可以通过在设计 .xml 文件中编写 include nameOfFile 来做到这一点。

我试过以下方法:

创建了一个 .xib 文件链接到一个 .h 和 .m 文件,它们都称为 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 文件并返回结果。将其添加为 containerView 中的 subview

//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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com