2011-08-10 66 views
1

很明顯,我是iOS新手,我遇到了許多我在網上找到的教程中的一個問題。雖然我理解進入這些程序的大部分代碼,但我無法弄清楚如何翻譯這一個事實,這可能很簡單。參考指南:替換根視圖控制器/應用程序委託?

許多教程都使用基於導航的模板或基於視圖的模板,但我想嘗試構建標籤欄應用程序。教程要麼使用應用程序委託或rootViewController(作爲導航控制器),但由於我的標籤欄是我的rootViewController,我總是遇到問題。我也無法在我的大部分代碼中使用applicationDidFinishLaunching方法,因爲它在技術上僅適用於啓動時的第一個選項卡。

這是我的問題:

  1. 是否有「翻譯」這些文件到新的類(例如一種方式,爲每個單獨的選項卡或創建實例的應用程序代理代碼創建NSObject的實例UINavigationViewController)?

  2. 如果我可以創建NSObject的實例,如何確保代碼鏈接到我在viewController中創建的對象?

  3. 如果我可以創建一個使用UINavigationController的文件,我該如何誘騙程序暫時允許Nav Controller作爲rootViewController。

非常感謝提前!

回答

1

就在我頭頂,我只能回答3號,你可以用我知道的兩種方法之一來做,如果有人看到這兩種方法中的任何一種是不正確或不正確的做法,我希望有人糾正我,因爲這是我一直在做的事情。

[appDelegate.window addSubview:appDelegate.newRootViewController.view]; 
appDelegate.window.rootViewController = appDelegate.newRootViewController; 

[self.navigationController pushViewController:appDelegate.newRootViewController animated:YES]; 

雙方要做到同樣的事情,但如果你能幫助它,第二個版本是理想的。它也值得注意的是,對於第一個,沒有欺騙,你實際上是將你的應用程序的rootViewController設置爲不同的東西。

我會做一些挖掘,看看我是否也可以回答你的任何其他問題。

編輯:所以在重新閱讀和思考更多關於它之後,我認爲可以通過澄清標籤欄應用程序來解答其他兩個問題。不幸的是,我對iOS相當陌生,而且我沒有機會創建一個標籤欄應用程序,所以我不想給你不正確的信息。我建議您查看http://www.techotopia.com/index.php/Creating_an_iOS_4_iPhone_Multiview_Application_using_the_Tab_Bar_%28Xcode_4%29,希望它能讓您更好地瞭解Tab Bar Apps的工作原理。我一直在使用該電子書,以及來自該網站的另一個電子書以及Ray Wenderlich的教程來教導我自己。

無論如何,我希望這在一定程度上有所幫助,如果你想讓我試着澄清或詳細說明任何只是評論,我會看看我是否可以提供幫助。

祝你好運!

-Kolyoly

+0

可惜我出票。這是一個很好的答案。將upvote明天。 –

0

您誤會了應用程序委託的工作原理。

它是應用程序的委託,而不是一個控制器。您可以在調用applicationDidFinishLaunching時從xib加載控制器,但兩個事件之間沒有連接。

的applicationDidFinishLaunching就是,你做最後的安裝之前,應用程序就可以使用的地方。

如果你沒有在你的主XIB文件實例化你的標籤欄控制器,你可以在這裏實例化它,然後實例化它的所有控制器,並將它們添加到標籤欄控制器。當你這樣做時,你可以加載plists,在控制器上設置屬性等。

如果你在你的主xib文件中實例化你的標籤欄控制器,你仍然可以在這裏訪問它的控制器。您可以編輯這些控制器或將其丟出並創建新控制器。你甚至可以扔掉你的標籤欄控制器並切換到導航控制器。

我不能回答問題1和問題2,因爲他們背後的假設是無效的。

而不是問你是如何工作與應用程序的委託和標籤欄控制器周圍認識到的問題,說明你要完成的任務。

相關問題