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

标签 ios iphone objective-c xib addsubview

我正在寻找一种方法来重用一个 .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/

相关文章:

javascript - 在 iOS5 网站中使用 native 滚动下拉刷新

iphone - 使用新的外部存储标志将 UIImage 存储在 Core Data 中

iphone - 导出 CoreData 的快捷方式是什么?

ios - 在 tableView 中使用按钮/图像 :editActionsForRowAt:

ios - 使用 UILocalizedIndexedCollat​​ion 在 Swift 4.2 中创建 tableView 部分索引时出现错误 "unrecognized selector sent to instance"

iphone - 如何比较图像字符串(名称?)并更改图像

ios - ios和非ios设备之间的蓝牙连接

iphone - 如何在 iPhone 应用程序中列出单个开发人员的所有 iPhone 应用程序?

ios - 设计核心数据数据库

objective-c - 创建好友属性的正确方法