在我的iPhone應用程序中,我製作了一個自定義的UIView,用於在幾個不同的視圖控制器中顯示一些信息。加載自定義UIView的最佳方式是什麼?
我很熟悉在表中使用客戶表格單元格,但我從來沒有再做過自定義視圖。
我的問題是加載此視圖的最佳方式是什麼?我試圖簡單地將視圖放置在我希望它使用IB顯示的視圖控制器中,但這似乎不夠。在我看來,如果你爲視圖設置Class Identity,它應該在創建視圖控制器時加載該視圖。或者,也許它並不是因爲它不知道用什麼筆尖(當然它在自己的筆尖)。
由於它不是視圖控制器,我不能只使用initWithNibName。我試過使用NSBundle loadNibNamed,就像我對錶格單元格做的那樣,但它看起來像是一個非常大量的工作。代碼如下所示:
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[MyCustomView class]]) {
self.customView = currentObject;
break;
}
}
[self.view addSubview:self.customView];
必須有一個更簡單的方法,不涉及循環。此外,以這種方式創建視圖使我在IB實際放置視圖的位置上丟失了來自IB的所有信息。它創建於0,0,這不是我想要的地方。是的,我知道我可以設置一個新的框架,但是再次,必須有一個更簡單的方法。有沒有辦法通過IB來完成這一切?或者至少用編程方式減少工作量?
IB在這裏爲我做了些什麼?我必須從nib手動加載視圖,然後手動將框架設置爲正確的位置和大小,然後將其添加到父視圖。我已經使用一個UIView對象連接到IB,而這個UIView對象是我進入設計器的,但是這真的很有必要嗎? IB在這裏爲我做什麼? – Mike 2010-10-08 18:10:40
IB爲您做所有的子視圖佈局,包括那些屬性設置和IBOutlet和IBAction綁定。你可以繼續找到更簡單的方法,我相信沒有。無論如何,你的代碼片段是好的,如果你使它成爲一種方法,你將更容易加載自定義的UIView。 – tia 2010-10-08 18:21:24