2009-11-17 63 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

相關問題