假設我有一個UIView,我想在多個視圖控制器中重用,因爲它是一個相當普通的具有高可用性值的UIView對象(如UITextField
或UISegmentedControl
對象)。根據我的理解,如果我在代碼中編寫UIView,而不是使用Interface Builder製作XIB,重用此UIView會容易得多。我已經達到了這個結論,因爲如果UIView的是寫在代碼的話,我可以簡單地在任意視圖控制器初始化的UIView的一個新實例:重新使用基於代碼的UIViews與XIBs相比
MyGreatReusableView *greatReusableView = [[MyGreatReusableView alloc] initWithFrame:CGRectMake(...)];
...然後直接訪問的UIView的屬性和特性,就像使用股票UIView控件(例如UITextField
)與它的.text
,.textColor
等屬性一樣。但是,如果我創建UIView作爲XIB,那麼它必須通過文件所有者或XIB中的View對象上的IBOutlet綁定到特定的視圖控制器,因此只能用於視圖控制器。此外,我只能使用連接到該視圖控制器的IBOutlets訪問XIB上的控件的屬性。
我在想,我完全誤解了一些關於XIB文件的問題,因爲這看起來確實是一個限制!如果有人能夠澄清是否有可能在多個視圖控制器中重新使用XIB文件,並且如果是這樣,請提供一個基於代碼的解決方案與基於XIB的解決方案的示例,我將非常感激。
在此先感謝您的幫助!
感謝您的留言。我是否正確創建了一個視圖控制器,然後將該控制器上的視圖出口純粹設置爲XIB視圖,以便您可以訪問代碼中的視圖控制器.view屬性?換句話說,視圖控制器本身什麼都不做?我只是擔心,這似乎不是一個非常優雅或有效的解決方案,因爲在代碼中創建UIView意味着我可以直接初始化UIView,而不必經歷使用UIViewController的開銷。 – Skoota 2011-02-06 10:17:49