2011-09-01 96 views
-1

我是新來iPhone編程,我想建立一個應用程序,有一個uinavigationcontroller和rootviewcontroller是一個uiviewcontroller,基本上是一個登錄屏幕從登錄屏幕用戶移動到uitabbarcontroller有5個選項卡,每個選項卡是一個uinavigationcontroller和每個導航控制器在導航欄中有兩個按鈕一個按鈕帶來消息視圖和其他通知視圖每個視圖是一個uiviewcontroller。iphone應用程序與uinavigationcontroller和uitabbarcontroller

現在用戶可以按下每個選項卡上的消息按鈕,消息視圖將出現,我想確保如果他按下第一個選項卡上的按鈕,然後轉到另一個選項卡,消息視圖將消失,從內存中解除分配,當他按下新選項卡上的消息按鈕時,將出現另一個消息視圖。

我試着在應用程序委託中創建單個消息視圖,每當用戶按消息按鈕從應用程序委託調用方法,然後在方法中檢查按下哪個選項卡並將視圖推送到導航控制器屬於該選項卡,但無法正常工作。

+0

請編輯您的問題,包括標點符號,大小寫,以及某種合理的句子結構。不要指望別人爲你清理你的問題。 – Caleb

回答

0

您可以在AppDelegate中嵌入您的登錄視圖並根據需要顯示它們。從那裏你會加載你的rootController,它應該是你的tabBar。然後,您可以在每個選項卡中加載您的導航控制器。每個標籤一個。您的消息視圖可以從任何選項卡調用。只需確保您以正確的方式對控制器進行分層。

AppDel - >的TabBar - > NavController - >個人意見

+0

我需要首先加載登錄屏幕,並且只有在用戶完成登錄過程後才加載tabcontrol。 – user922970

+0

這就是我在應用程序中的做法。我堅持在AppDelegate中,直到我已經驗證了有效的登錄(無屏幕)或提供的登錄屏幕來獲取憑證。一旦所有東西都通過了,加載我的TabBar的rootController並從那裏開始。祝你好運。 –

+0

謝謝,但它並沒有真正解決我的問題 – user922970

0

你有沒有意識到,你可以更換根視圖控制器在一個窗口?應用程序委託的-applicationDidFinishLaunching:withOptions:方法大概會是這樣的:

window.rootViewController = loginViewController; 

當您設置窗口的rootViewController屬性窗口將添加視圖控制器的觀點作爲其自身的子視圖。

-applicationDidFinishLaunching:withOptions:沒有什麼特別的特別之處 - 它恰好是應用完成加載並準備開始業務時調用的委託方法。您可以從其他的方法來設置窗口的rootViewController性能也很好,所以當你登錄視圖控制器確定用戶成功登錄,它可以做類似下面的一個:

  • 實例的標籤欄控制器並設置窗口的rootViewController屬性本身
  • 向其委託(可能與應用程序委託相同的對象)發送消息以通知其登錄成功;然後委託可以安裝標籤欄控制器
  • 廣播通知告訴任何人誰在乎登錄成功,並讓別人安裝標籤欄控制器
+0

問題不在於tabbar我需要做的是在每個選項卡中顯示消息視圖或通知視圖,但以某種方式顯示,如果用戶在一個選項卡中打開它,然後轉到另一選項卡那麼先前選項卡中的消息視圖將關閉並處理,並在當前選項卡中打開一個新視圖 – user922970

+0

您可以更改與每個選項卡關聯的視圖控制器,就像您可以更換根視圖控制器一樣,如果這真的是你想要做的。 UITabBarController具有'viewControllers'屬性,您可以將其設置爲視圖控制器數組來配置選項卡。或者,您可以更改每個導航控制器的根視圖控制器。但是,作爲用戶,我可以向您保證,我更願意將單個登錄視圖分配給六個單獨的登錄視圖。 – Caleb

相關問題