我正在使用界面生成器爲我正在創建的應用創建UI。該應用程序有一個顯示一系列按鈕的單個屏幕。點擊一個按鈕會顯示一個覆蓋按鈕的相關視圖。點擊另一個按鈕隱藏以前的覆蓋視圖並顯示另一個視圖。
太讓管理更簡單的用戶界面在IB我已經決定要創建多個筆尖文件是點擊相關按鈕時會出現在每個子視圖。然後,我使用UINib
類在視圖控制器的viewDidLoad
方法中加載子視圖的nib文件。
這背後的想法是,以避免在一個單一的筆尖文件堆疊在彼此的頂部上,因爲這將是很難在IB來操縱多個視圖。我可以在代碼中創建所有視圖,但是這需要很多繁瑣的編碼,因爲每個子視圖的佈局都非常複雜(具有多個子視圖)。
從nib文件加載子視圖的示例代碼。
- (void)viewDidLoad
{
UINib *aSubViewNib = [UINib nibWithNibName:@"aSubView" bundle:nil];
NSArray *bundleObjects = [aSubViewNib instantiateWithOwner:self options:nil];
// get root view from bundle array
UIView *aSubView = [bundleObjects objectAtIndex:0];
[self.view addSubview:aSubView];
...
上面的代碼重複其他視圖。
總之我有一個有分層的是顯示/隱藏通過點擊按鈕的觀點在一個屏幕的iPhone應用程序。這是通過一個具有關聯的nib文件的單個視圖控制器以及一系列用於視圖控制器的viewDidLoad方法中加載的子視圖的附加nib文件實現的。
問題!
對不起,長介紹,但我想很清楚這是我在做什麼。
- 是我的做法不好或不尋常?
- 這樣做有什麼潛在的問題嗎?
- 當他們需要動態接口時,其他人還做了什麼,並且 仍然希望在Interface Builder中保留所有內容?
注意
之前有人問我爲什麼不只是顯示一個新的屏幕上的子視圖,並使用導航欄,讓我說,我有很好的理由,我不明白的iOS UI準則。上面的用例並不完全是我的用例,但它清楚地描述了問題,而沒有陷入我的開發應用程序中。
而且我知道我可以寫所有的子視圖作爲代碼,但每個子視圖有子視圖一個複雜的佈局,這將是一個很大的代碼和插科打諢,試圖讓他們找合適的。
在此先感謝。
因此,對於我將視圖拆分爲單獨的nib文件的唯一原因是爲了更容易地管理IB中的這些視圖,您認爲我的方法可以安全使用,還是會破壞Apple的準則? – Camsoft 2012-01-13 10:18:54
關於你在做什麼沒有規則或指南。你在這方面很好。 – Jim 2012-01-13 15:38:06
我添加了許多開發人員使用的真實軟件組件的示例。有關更多詳細信息,請參閱上面的答案 – Jim 2012-01-13 17:22:49