在UIViewController上添加UIView

3
我想在一个UIViewController中添加一个“自定义”UIView,这个自定义视图是我用xib创建的,它与视图控制器是分开的。
有没有人知道如何将带有xib的UIView添加到UIViewController中?
非常感谢。
2个回答

3
你是指一个额外的视图,而不是主控制器视图?在这种情况下,你可以为该视图声明一个属性,并手动加载NIB:
@interface Controller {}
@property(retain) IBOutlet UIView *extraView;
@end

…

- (void) viewDidLoad // or anywhere else
{
    [[NSBundle mainBundle] loadNibNamed:@"extras" owner:self options:nil];
    NSAssert(extraView != nil, @"The extra view failed to load.");
    [[self view] addSubview:extraView];
}

这假设您在Interface Builder中将Controller设置为文件所有者,并将视图链接到extraView插座。还要注意,可能会有更优雅的解决方案,比如将额外的视图插入到控制器的主NIB中;这取决于情况。

抱歉没有更详细的描述。我有一个AControlloer.h.m,然后我创建了BView.h.m和一个NIB文件。所以每当我想要加载控制器时,我想将这个BView添加为子视图。 - tosi
那看起来像是最常见的情况,我会添加另一个答案。 - zoul

1

看起来你想要最常见的场景 - 简单地将一个已初始化的自定义UIView子类加载到控制器中。

  1. 在 Xcode 的新文件向导中创建一个名为“View XIB”的新 XIB。
  2. 在 Interface Builder 中选择 File Owner 对象,在对象检查器 (Cmd-4) 中的对象身份选项卡中输入 Controller(或者你的控制器类的名称),并设置 Class 字段。
  3. 对视图也做同样的操作,输入你的视图类的名称。
  4. 从文件所有者 Ctrl+拖动到视图上,你应该能够将视图连接到在控制器上定义的视图 outlet。
  5. 保存,比如命名为Controller.xib
  6. 在你的代码中,使用 initWithNibName:@"Controller" bundle:nil 初始化控制器。初始化代码应该为你加载界面并将视图属性设置为从接口文件中解包出来的视图。

学习一些 Interface Builder 教程,IB 是一个非常好的工具,熟悉它是很有用的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接