1

我有一個根視圖控制器的困難。頂視圖控制器錯誤

enter image description here圖片(1)

在下面的代碼和圖片1,一切工作正常。 但圖片2 enter image description here圖片(2)中,我得到了一個錯誤說

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[BannerViewController topViewController]: unrecognized selector sent to instance 0x7feb9b64dbc0'

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
    UINavigationController *navController = tabBarController.viewControllers[0]; 

    ItemListTableViewController *itemList = (ItemListTableViewController *)navController.topViewController; 
    itemList.managedObjectContext = self.managedObjectContext; 

    return YES; 
} 

所以,請幫助我如何在導航控制器的前面插入一個視圖控制器?

+0

你'UINavigationController'實際上是'BannerViewController'。你必須檢查這行'UINavigationController * navController = tabBarController.viewControllers [0];' – jose920405

回答

0

您可以通過容器VC的childViewControllers財產得到導航控制器參考:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
    UIViewController *containerVC = tabBarController.viewControllers[0]; 
    UIView *containerVCview = containerVC.view; 
    UINavigationController *navController = containerVC.childViewControllers[0]; 

    ItemListTableViewController *itemList = (ItemListTableViewController *)navController.topViewController; 
    itemList.managedObjectContext = self.managedObjectContext; 

    return YES; 
} 
+0

應用你的代碼後,我得到另一個錯誤說:「終止應用程序由於未捕獲的異常'NSRangeException',原因:'*** - [ __NSArray0 objectAtIndex:]:索引0超出空NSArray的邊界'「我該怎麼辦? –

+0

@borinprak嗯...似乎容器VC尚未實例化子視圖控制器。讓我測試一些想法..... – pbasdf

+0

@borinprak要強制容器VC加載其視圖,並因此childVC,只是訪問其視圖 - 我會相應地修改代碼。 – pbasdf