ios - 从 NIB 动态创建 UIView 的多个实例

标签 ios xcode

我在屏幕上有一个网格。它是 UIView 子类的一个实例。在网格的单元格中,我想在用户与应用程序交互时添加 subview 的实例——UIView 的另一个自定义子类。 subview 本身是我想在 XIB 中设计的东西。它的控件代表该特定单元格的状态。它由几个 UIControl(比如一个标签和一个按钮)组成。

我已经知道我可以使用动态加载 NIB

[[NSBundle mainBundle] loadNibNamed:@"MyNIB" owner:self options:nil];

而且我知道如果我将 NIB 中的文件所有者属性设置为负责将这些 subview 添加到的 View 的 View Controller ,它们就会起作用。我用它来将一些外部 NIB 添加到主应用屏幕中的 UIScrollview。

我想知道的是如何动态地执行此操作?我想说这样的话:

MySubviewCell * sv = [[NSBundle mainBundle] loadNibNamed:@"MyNIB" owner:self options:nil];
[sv setFoo:@"Foo"];
[sv setBar:123];
[sv setFrame:myrect];
[mainView addSubview:sv];

当然 loadNibNamed 不会返回 subview 实例,而是返回 View 中所有控件的数组。

编辑 MySubviewCell NIB 中的文件所有者将是一个问题:没有,也不可能:我不知道我需要多少。我应该使用 ArrayController 之类的东西吗?

EDIT 2 请忽略之前的编辑;我把它留在了答案中,但这不是我认为的问题。

我可以这样做吗?

谢谢

最佳答案

这通常在设计 nib 中的表格 View 单元格时使用。您有两个选择:

  1. 返回数组的索引 0 处的对象将是您的 nib 中的“根”对象。
  2. 在 MySubviewCell 类型的 View Controller 中创建一个 socket 。将 Nib 中文件的所有者类设置为 View Controller ,并将导出链接到您感兴趣的 Nib 中的元素。当您使用所有者自身加载 Nib 时,导出将被填充。然后您可以配置它,将它添加到您的阵列中,并将导出设置回 nil 以准备为下一个实例再次加载 Nib 。

关于ios - 从 NIB 动态创建 UIView 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8280319/

相关文章:

ios - 如何从 Storyboard 返回自定义单元格高度?

ios - iOS 中的每个应用程序都具有相同的 deviceToken 吗?

ios - __attribute__ ((noreturn)) 在 Xcode 5.1 但不是 Xcode 5.0.2 中生成警告

ios - 在 Swift 3 中处理 Google 登录时遇到问题

ios - 使用免费的开发者帐户将 iOS 应用程序安装到多个设备上

ios-从后台状态恢复后保持特定事件 ViewController 的屏幕方向

ios - 使用自定义类设置/实例化 IB subview

ios - 如何使用 Web 服务搜索多个单词

ruby - Xcode 4.4 + MacRuby = "macruby.h not found"(OS X 10.8 Mountain Lion)

ios - 错误 ITMS-90046 使用 xctool/xcodebuild vs XCode Archive 的成功