【问题标题】:Nesting Custom Classes/XIB's with Interface Builder使用 Interface Builder 嵌套自定义类/XIB
【发布时间】:2010-12-17 13:39:16
【问题描述】:

我会尽量缩短。

我编写了一个自定义类,它使用几个 IBOutlet 属性扩展了 UIView,并且它有一个与之关联的 XIB,这些 IBOutlet 链接到。

然后我想学习该课程,将其嵌入到其他 XIB(例如,表格单元格)中,然后让它工作。

似乎当我在新的 XIB 中嵌入该自定义类时,它无法识别我与之关联的原始 XIB,因此它要求我将 IBOutlets 重置为新 XIB 上的接口元素。这是蹩脚的。

有人了解我想要做什么并有好的方法吗?

【问题讨论】:

    标签: objective-c iphone iphone-sdk-3.0 uikit interface-builder


    【解决方案1】:

    以下是我设法完成这项工作的方法:

    在界面生成器中
    打开你的外笔尖并执行以下操作:

    • 添加一个 UIView 来定义您希望内部笔尖显示的空间。
    • 从库中添加一个 UIViewController 对象,将其 Nib Name 属性设置为您的内部 nib 文件的名称(不带扩展名)。
    • 在外部视图控制器中为这两个项目创建 IBOutlets 并将它们连接起来。 (我将它们称为 innerView 和 innerViewController。)
    • 不要将内部视图控制器中定义的任何 IBOutlets 连接到外部 nib 文件中的任何内容,让它们保持未连接状态。

    在 Xcode 中
    在您的外部视图控制器的 viewDidLoad 方法中,添加以下两行:

    [self.innerView addSubview:self.innerViewController.view];
    self.innerViewController.view.frame = CGRectMake(0, 0, self.innerView.frame.size.width, self.innerView.frame.size.height);
    

    如果您的外部 nib 是自定义 UITableViewCell,请将这些行放在您的 awakeFromNib 方法中。

    构建并运行!

    【讨论】:

    【解决方案2】:

    我假设您只是将 UIViews 放在一个 nib 中,供纯代码中的 UIViewController 使用。 Apple 将其称为detached nib file。

    请按照我链接到的指南了解详细信息和如何使其工作的示例。

    关于在 Interface Builder 中将视图嵌入到另一个视图中,您需要将 add a UIView element from the Library 放入父视图中,并将 set its class in the Inspector 。一旦设置了嵌入视图的类,您的 IBOutlets 应该是可见的。

    【讨论】:

    • 第一句话不是我正在做的。该类本身是一个 UIView,它包含一个 UIImageView 和一个 UIActivityIndi​​cator。最后一句话是对的,但不幸的是它的行为不正确。它顶起 IBOutlets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2018-08-22
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    相关资源
    最近更新 更多