【问题标题】:Add UIView on UIViewController在 UIViewController 上添加 UIView
【发布时间】:2011-06-14 15:11:01
【问题描述】:

我想在 uiviewcontroller 上添加一个“自定义”uiview,这个自定义视图是我用 xib 创建的,它与视图控制器是分开的,

有谁知道如何将带有 xib 的 uiview 添加到 uiviewcontroller 中?

在此先感谢

【问题讨论】:

    标签: objective-c uiview uiviewcontroller add


    【解决方案1】:

    您的意思是附加视图,而不是主控制器视图?在这种情况下,您可以为视图声明一个属性并手动加载 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 添加为子视图。
    • 这似乎是最常见的情况,我将添加另一个答案。
    【解决方案2】:

    看起来您想要最常见的场景 - 只需将初始化的自定义 UIView 子类加载到控制器中。

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

    通过一些Interface Builder教程,IB是一个非常好的工具,熟悉它很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-29
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多