【问题标题】:How do you use Custom Objects in Xcode 4?你如何在 Xcode 4 中使用自定义对象?
【发布时间】:2011-05-18 10:57:22
【问题描述】:

我和this page有同样的问题:

在 Interface Builder 3 中,我们可以拖动自定义对象(例如 subview obj UIView ) 到舞台。但是在 XCode 4 中,在我们创建了一个 xib 之后,我有 麻烦重用它,除非通过代码。
而在“对象库”->“自定义对象”中,它是空的。

但是那里给出的答案对我不起作用。我将 xib 文件拖到自定义对象列表中,但它没有向列表中添加任何内容。

【问题讨论】:

  • 我想编辑你的问题,让它包含 OS X 开发,而不仅仅是 iPhone 开发(正如@Michael 指出的那样),但我觉得我正在改变问题的本质,所以我会让你决定是否要更改问题。
  • 我认为与其浪费时间使用 Interface Builder,不如简单地从代码中创建视图。

标签: iphone objective-c xcode


【解决方案1】:

由于您将此问题标记为“iPhone”,因此我假设您正在进行 iOS 开发。您不能将 Xcode 的“自定义对象”功能用于 iOS 开发——它旨在用于为 Mac 开发的应用程序。

在 iPhone 开发中最接近模仿此功能的方法是创建您自己的自定义 UIView 组件,然后您可以在 xib 文件之间拖动该组件。

您还可以创建具有 .h/.m/.xib 文件的自定义 UIView 子类。如果您想以编程方式创建对象,您可以这样做:

NSArray *items = [[NSBundle mainBundle] loadNibNamed:@"MyClass" owner:owner options:nil];
id myView = [items objectAtIndex:0];

关于 Mac 开发,自定义对象面板实际上已不再使用。我想这个功能要么被排除在 Xcode 的未来版本之外,要么 Apple 仍在努力改进对 IB 插件的支持。以前版本的 Xcode 和 Interface Builder(当 IB 是它自己的应用程序时)支持 interface builder 插件和自定义 UI 元素的创建。 BWToolkit 就是这样一个插件的一个例子。来自文档:

Xcode 4 对 Interface Builder 3 插件提供有限的支持。 具体来说,您可以使用 Interface Builder 插件构建项目 依赖项,但不能编辑 nib 文件。当您尝试打开一个 带有插件依赖项的 nib 文件,Xcode 4 显示一个对话框 建议您更新文件(图 4-3)。如果你同意,Xcode 将使用插件构建的自定义对象类转换为 最近的 AppKit 类。如果不能转换,Xcode 4 提供详细的错误消息。在这种情况下,您必须删除 使用 Interface Builder 3 插件依赖,然后您可以编辑 Xcode 4 中的 nib 文件。

【讨论】:

  • 这很有帮助,考虑到问题实际上被标记为 iPhone,它确实回答了这个问题,但如果您能添加有关此自定义对象功能如何可能的其他信息,我将不胜感激用于 OS X 开发。
  • 我添加了一个关于 Mac 开发的注释。
【解决方案2】:

这是你的答案。您无法在 Xcode 3.x 之后创建自定义对象。

How to use "Custom Objects" in IB in XCode 4

如果您使用自定义对象打开 Xcode 3 项目,它将出现在此列表中。

【讨论】:

    【解决方案3】:

    我认为有另一种方法可以做到这一点。

    1. 创建一个 .nib 文件。在这个 .nib 中做任何你想做的事情,例如带有一些 UI 控件的 UIView。
    2. 复制此自定义 UIView。
    3. 返回要添加此自定义 UIView 的情节提要。
    4. 选择目标 UIViewController 并粘贴,完成。

    【讨论】:

      【解决方案4】:

      您可以在界面生成器中指定自定义类 在类下拉列表中,您可以为界面生成器中的 ui 元素选择自定义类。必须将类添加到项目中才能显示在下拉列表中。

      【讨论】:

      • 如果自定义类包含 xib 作为其一部分,我认为这种方法不起作用,它仅在自定义类仅基于 .h 和 .m 文件时才有效
      • 自定义界面生成器对象和自定义类之间肯定有区别。
      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多