【问题标题】:Interface Builder - How to create a custom UIView with many subviewsInterface Builder - 如何创建具有许多子视图的自定义 UIView
【发布时间】:2013-08-09 04:54:47
【问题描述】:

如何在界面生成器中创建自定义 UIView(具有许多子视图、UITextField 等)?

我不想要一个带有 NIB 的 viewController 只是一个简单的 UIView,有很多子视图,在 IB 中创建,然后我可以分配 init 并使用,这可能吗?

【问题讨论】:

  • 如果您使用的是界面生成器,将有一个 NIB。 . .
  • 不是我不想要NIB,我只是想用interface builder创建一个UIVIEW,一个独立的uiview,我该怎么做呢?
  • 如果你用界面生成器创建然后手动删除视图控制器呢?
  • 好的,我如何从NIB分配init?

标签: ios objective-c xcode cocoa-touch interface-builder


【解决方案1】:

是的,您可以在 nib 中创建 UIView —— 当您创建基于视图的 nib 时,这就是您正在创建的 UIView。没有视图控制器(尽管通常,您将视图控制器设为 nib 的文件所有者)。

您需要创建一个自定义视图类,并将 xib 上的视图类更改为该自定义类,以便在该视图中连接 IBOutlets。当你想在控制器中使用视图时,你可以像这样实例化它:

UINib *nib = [UINib nibWithNibName:@"CustomView" bundle:nil];
CustomView *view = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];

此方法的局限性在于,您的 outlet 属于视图类而不是视图控制器,这在 MVC 意义上可能不是(但可能是)正确的做法。

【讨论】:

  • @JohnWoods,如果您希望视图控制器具有指向视图中 UI 元素的属性(而不是指向视图的 IBOutlets),您可以通过给每个视图一个唯一的标签来实现,并使用 viewWithTag: 找到它们,并将它们分配给一个属性。在这种情况下,您不需要创建自定义类,因为您不会使用 IBOutlets。
  • 非常感谢我创建了新的 UiView 类和 xib 文件并在 uiviewController 内部调用的非常好的信息,这些信息出现在这个 viewController 上:)
  • 短而甜。谢谢。
猜你喜欢
  • 1970-01-01
  • 2015-01-24
  • 2014-10-20
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
相关资源
最近更新 更多