gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 18:43:30 25 4
gpt4 key购买 nike

我在屏幕上有一个网格。它是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com