2009-11-17 62 views
9

我会尝试尽可能缩短它的长度。使用界面生成器嵌套自定义类/ XIB

我写了一个自定义类,它用一些IBOutlet属性来扩展UIView,并且在那些IBOutlets链接到它的地方有一个与它关联的XIB。

然后,我想把这个类嵌入到其他一些XIB(例如表格单元格)中,然后让它工作。

看来,当我将该自定义类嵌入到新的XIB中时,它无法识别与其关联的原始XIB,因此它会要求我将IBOutlet重置为新XIB上的界面元素。这是跛脚。

有没有人知道我在做什么,并有一个很好的方法?

回答

8

下面是如何设法使这项工作:

在Interface Builder
打开外笔尖和做到这一点:

  • 添加一个UIView来定义您希望您空间站内部笔尖显示。
  • 从库中添加一个UIViewController对象,将其Nib Name属性设置为内部nib文件的名称(不带扩展名)。
  • 在外部视图控制器中为这两个项目创建IBOutlets并将其连接起来。 (我称它们为innerViewinnerViewController
  • 不要连接任何外部的榫文件在你的内心视图控制器定义为任何东西IBOutlets的,只是不连接它们。

在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); 

如果你的外笔尖是一个自定义的UITableViewCell,把这些线在你awakeFromNib改为方法。

Build &跑吧!

+0

它在OS X上的工作方式相同,只是用它们的NS对应替换UI类。 – Mark 2013-08-15 17:42:53

1

我假设你只是简单地将UIViews放在一个笔尖中供UIViewController使用,这纯粹是在代码中使用的。苹果称这是一个detached nib file

按照我指导的链接了解详细信息以及如何使其工作的示例。

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

+1

第一句话并不完全是我在做的。该类本身是一个UIView,它包含一个UIImageView和一个UIActivityIndi​​cator。最后一句话是对的,但不幸的是它行为不正确。它支持IBOutlets。 – 2009-11-17 19:23:56

相关问题