1

У меня есть одна проблема с контроллером корневого представления.Ошибка с контроллером верхнего уровня

enter image description here Picture (1)

В коде ниже и рисунке 1, все работало отлично. Но в картине 2 enter image description here Picture (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

Вы можете получить ссылку на навигационном контроллере через childViewControllers свойство контейнера VC:

- (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 Чтобы заставить containerVC загрузить его представление, и, следовательно, childVC, просто получить доступ к его представлению - я внесу соответствующий код. – pbasdf