2009-05-05 119 views
2

我一直在努力與我的第一個真正的iPhone應用程序一點點,並希望得到一些建議,應如何結構。我正在尋找一些創建UI組件並將它們鏈接在一起以創建應用程序流的最佳實踐(以編程方式創建視圖/控制器與Interface Builder等)。iPhone應用程序:總體應用程序層次和體系結構

概述:
我需要顯示「登錄」視圖上的應用程序啓動。
- 顯示「註冊」視圖,如果他們點擊註冊按鈕。

登錄後...我有一個TabBarController裝載4次。這4個視圖將不得不加載子視圖(master-detail)。

我的問題是:
1)什麼是拼湊這個導航結構的最佳方式?使用相應的ViewController將每個視圖創建爲.xib?這些如何粘在一起?

2)我應該如何處理登錄/註冊導航,沒有的TabBar應該開始被顯示,但認證用戶之後會需要它。

Bonus Point)有沒有記錄這種東西的最佳實踐?我一直在攻擊一些可行的代碼,但我迷失了方向,並希望以正確的方式重新開始。

我知道這可能是一個有點混亂,所有和任何幫助深表感謝。

編輯:關於我用這個標籤欄,很簡單,頂部的登錄視圖。

 
LoginViewController *loginViewController = [[LoginViewController alloc] init]; 
[loginViewController initWithNibName:@"Login" bundle:nil]; 
[self.tabBarController presentModalViewController:loginViewController animated:YES];

回答

1

當您在XCode中創建基於標籤欄的新應用程序時,您已經按照自己喜歡的方式進行了設置 - 主XIB爲來自單獨的XIB文件的每個標籤加載視圖。每個選項卡都有一個XIB。請注意,當您更改類型或添加選項卡時,您需要在帶有選項卡欄的XIB以及用於創建視圖的XIB中指定正確的視圖控制器類型!

至於登錄視圖,常用的方法是使用上面的標籤欄,但在應用程序委託中,applicationDidFinishLaunching方法提供了一個顯示登錄屏幕的模式視圖控制器。模態控制器隱藏標籤欄和其他所有內容,直到完成,然後可以將其解除。

+0

您可以詳細介紹一下presentModalViewController調用嗎?它看起來像我必須在導航控制器上調用它,我只有一個tabbarcontroller。 – JWD 2009-05-06 23:48:55

0

在我看來,只有Cocoa編程示例和非常簡單的應用程序適用於單個筆尖文件。否則,您應該將界面組件分散到多個筆尖中。這意味着每個筆尖較小,並且在加載到內存時將只根據需要加載這些組件。這樣可以提高應用程序的性能,並且可以幫助在邏輯上組織您的程序,並使問題出現時更易於調試。

在我的TabBar應用我使用的MainWindow.xib包含主窗口和TabBar,但我每個標籤分手到上述原因,一個單獨的筆尖。

蘋果提供了以下指導原則:

在創建筆尖文件,儘量保持以下準則:

在考慮延遲加載設計你的筆尖文件。規劃加載只包含您需要的對象的nib文件。

在Mac OS X應用程序的主要nib文件中,請考慮僅將應用程序菜單欄和可選的應用程序委託對象存儲在nib文件中。避免包含在應用程序啓動之後纔會使用的任何窗口或用戶界面元素。相反,將這些資源放在單獨的nib文件中,並在啓動後根據需要加載它們。

將重複的用戶界面組件(如文檔窗口)存儲在單獨的nib文件中。

對於所使用的只是偶爾,其存儲在一個單獨的榫文件的窗口或菜單。通過將其存儲在單獨的nib文件中,只有在實際使用它時纔會將資源加載到內存中。

欲瞭解更多信息,您可以訪問:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4

1

1)什麼是拼湊這個導航結構的最佳方式?使用相應的ViewController將每個視圖創建爲.xib?這些如何粘在一起?

使用UINavigationController並根據需要將您的自定義視圖推送到導航堆棧上。請通過Xcode的新建項目選項查看示例導航控制器應用程序,以瞭解其工作原理。

2)我應該如何處理登錄/註冊導航,在開始時不應該顯示TabBar,但在認證用戶後需要它。

設置登錄視圖(我將使用UITableView,其中一個部分包含兩行用戶名和密碼,但這是我自己的首選項)。爲註冊字段設置第二個單獨的視圖(同樣,我會使用UITableView來保持佈局清潔和一致)。

也許使用視圖動畫來成功驗證後彈出標籤欄。

Bonus Point)有沒有記錄這種東西的最佳實踐?我一直在攻擊一些可行的代碼,但我迷失了方向,並希望以正確的方式重新開始。

你最終會重寫你的項目多次 - 這是一件好事。請檢查Apple的示例應用程序(可從iPhone ADC站點獲得),因爲這些應用程序包含幾種使用UIKit組件的「最佳實踐」方法。關於整合更大的應用程序,儘可能簡化設計並儘可能多地重複使用Apple的UI組件。您可以隨時自定義。