我有一個根視圖是一個UIView子類的xib。該視圖應該如何獲得對在Interface Builder中聲明的子視圖的引用?UIView應該如何獲得其子對象的引用?
很明顯,一個ViewController可以連接到網點,但是UIView呢?
我有一個根視圖是一個UIView子類的xib。該視圖應該如何獲得對在Interface Builder中聲明的子視圖的引用?UIView應該如何獲得其子對象的引用?
很明顯,一個ViewController可以連接到網點,但是UIView呢?
折扣店的UIViewController對象,其中(幾乎總是)指的UIView對象的實例(或者的UIView的子類)的性質。
UIViewController有一個UIView,當UIViewController加載到initWithNibNamed:
時,它是XIB文件的內容。您可以在UIViewController中設置插座,然後通過拖動到列表中的「文件所有者」項目,或者拖動到Xcode助理編輯器中的代碼,將它們綁定到XIB中的各個子視圖。
如果您只想使用代碼,有幾個選項。一種方法是根據其屬性tag
直接訪問視圖。例如:
[myView viewWithTag:42];
的另一種方法要考慮的是一個UIView有一個叫做subviews
屬性,它是子視圖的陣列。您可以遍歷它們並根據需要訪問視圖。要區分它們,您可以根據情況做幾件事情。您可以在視圖上設置標籤,並使用這些標籤。
NSArray *subviews = myView.subviews;
for(UIView *view in subviews){
if(tag == 42){
// Do something with that view
}
}
或者,如果你正在尋找一個特定的一種觀點,說,一個UISwitch,這樣的事情可能會在簡單情況下工作:
for(id view in subviews){
if([view isKindOfClass:NSClassFromString(@"UISwitch")]){
// Do something with that view, since it's a switch
}
}
如果您使用的標籤,你可以在代碼中設置它們,或使用Interface Builder。
嘗試[view viewWithTag:tagOfChildView];
優秀和全面的答案。我在迭代和檢查類,但使用標籤更清潔。謝謝。 – Undistraction 2012-07-20 12:57:21