2013-07-19 108 views
2

我正在使用Monotouch C#編寫一個帶有多個不同屏幕的iPhone應用程序。爲了簡單起見,我將只描述幾個導致我遇到問題的控制器的屏幕。添加UITabBarController時出現錯誤

我遇到的問題是,當創建它繼承從的UITabBarController一個類,我收到此錯誤消息:

應用窗口被預期在施用 端有一個根視圖控制器發射

在我的AppDelegate類中,我初始化一個UIViewController和一個UINavigationController。我設置了一個UIWindow對象上我的RootViewController的使用導航控制器是這樣的:

var splashController = new SplashController(); // UIViewController 
_navigationController = new UINavigationController(splashController); 

... 

_window = new UIWindow(UIScreen.MainScreen.Bounds); 
_window.RootViewController = _navigationController; 
_window.MakeKeyAndVisible(); 

到現在爲止,我還沒有問題與運行我的應用程序。但是,我創建了一個繼承自UITabBarController的新類,並且收到了上述錯誤消息。如果需要,我可以將代碼發佈到它,但我也嘗試使用從UITabBarController繼承的空類來運行我的應用程序,並且仍然收到相同的錯誤消息。

即使該類永遠不會在我的代碼中通過註釋或刪除PushViewController調用被調用,我仍然無法運行該應用程序。

標籤欄控制器的通話將最終看起來像這樣:

SplashController (UIViewController) > push > HomeController (UIViewController) > push > MenuController (DialogViewController) > push > StatsController (UITabBarController) 

我猜有一些額外的東西,我很想念這裏,但谷歌搜索和搜索周圍後,我無法找到答案我的問題。感謝您的幫助

+0

我試圖理解並重現您的問題,但迄今爲止失敗。您可能會創建一個觸發問題的極簡主義項目,並分享它。 –

+0

不好意思問這個,但我必須。你確定UINavigationController的構造函數是否返回值並且_navigationController不爲null? – JeffRegan

+0

是的,它肯定是初始化的 – Serberuss

回答

3

如果您正在使用的UITabBarController它應該是這個樣子:

window = new UIWindow (UIScreen.MainScreen.Bounds); 

      var viewController1 = new FirstViewController(); 
      var viewController2 = new SecondViewController(); 

      tabBarController = new UITabBarController(); 
      tabBarController.ViewControllers = new UIViewController [] { 
       viewController1, 
       viewController2, 
      }; 

      window.RootViewController = tabBarController; 
      window.MakeKeyAndVisible(); 

的的UITabBarController應該是RootViewController的。