2010-11-01 32 views
20

我想創建幾個自定義視圖,可重用的UI組件,並且不希望在UIView子類中的代碼中佈置UI。我想爲此使用一個xib。我自己使用了一個xib。我已經通過iteself使用了一個UIView子類。但我沒有把它們一起使用。我如何將它們「附加」到彼此?我想使用IBOutlets在我的自定義視圖中訪問UILabels。如何一起使用xib和UIView子類?

這種事情會起作用嗎?

NSArray *xib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil]; 
MyCustomView *view = [xib objectAtIndex:0]; 
view.myLabel.text = @"fred"; 
+2

請參閱http://stackoverflow.com/a/5056886/385619 – Willster 2012-03-09 12:39:26

回答

14

是的,這就是這樣,它當你加載不在父母viewControllers

編輯xibs 2013年8月15日的工作原理:

你不能總是假設自己將會從返回的NSArray的索引0中得到你正在尋找的內容,這就是使用類型檢查的好方法。

NSArray *xibArray = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:nil options:nil]; 
MyCustomView *myView = nil; 
for (id xibObject in xibArray) { 
//Loop through array, check for the object we're interested in. 
    if ([xibObject isKindOfClass:[MyCustomView class]]) { 
     //Use casting to cast (id) to (MyCustomView *) 
     myView = (MyCustomView *)xibObject; 
    } 
} 
+2

我確實按照我希望的方式工作。我創建了UIView子類,爲我所擁有的兩個UILabel添加了IBOutlets。在界面生成器中,我將視圖類更改爲我的UIView子類,並將我的兩個標籤上的引用插座設置爲視圖。 – Ron 2010-11-01 21:28:43

+0

我試圖做同樣的事情 - 你知道我應該用於(a)父UIControllerView和(b)自定義UIView本身?我已經注意到在我的代碼中我有我的自定義UIView類名稱,但是這給我一個遞歸調用我的自定義UIView初始化方法。這是我有(一)在父UIControllerView它使用我的自定義視圖,在IB它的XIB我使用UIView,我已經設置類名爲「clockview」,但(b)在我的實際clockview自定義UIView而不是UIControllerView)XIB文件我做了同樣的事情,並將類名設置爲「clockview」。 – Greg 2011-07-13 20:44:05

+0

這太費時了!任何其他技巧? – Krish 2012-07-27 11:14:04

相關問題