Предварительная загрузка представления из UITabBar

У меня есть класс, который загружает UITabBarController. Каждая вкладка открывает UINavigationController.

Я пытаюсь предварительно загрузить представления внутри моих UINavigationControllers. Я пытался сделать это:

UITabBarController * tabBarController = (UITabBarController *)self.centerController;
NSArray *myViewControllers = tabBarController.viewControllers;
for (UINavigationController *navViewController in myViewControllers)
{
    [navViewController loadView];
}

Я пробовал разные вещи, но он никогда не загружается. Я делаю что-то неправильно?


person syrio    schedule 14.12.2012    source источник


Ответы (3)


Спасибо, Ор Арбель, вы действительно помогли мне понять проблему. Мне пришлось вызвать view для первого UIViewController внутри UINavigationController. Вот код, который работает:

UITabBarController * tabBarController = (UITabBarController *)self.centerController;
NSArray *myViewControllers = tabBarController.viewControllers;
for (UINavigationController *navViewController in myViewControllers)
{
    [[navViewController.viewControllers objectAtIndex:0] view];
}
person syrio    schedule 14.12.2012

Если вы используете автоматическую компоновку, вы должны сообщить представлению, чтобы оно соответствующим образом размещало свои подвиды.

Попробуй это

UITabBarController * tabBarController = (UITabBarController *)self.centerController;
NSArray *myViewControllers = tabBarController.viewControllers;
for (UINavigationController *navViewController in myViewControllers) {
     UIViewController *ctrl = navViewController.topViewController;
     [ctrl.view setNeedsLayout];
     [ctrl.view layoutIfNeeded];
}
person olafurr    schedule 22.05.2015

Пытаться

UITabBarController * tabBarController = (UITabBarController *)self.centerController;
NSArray *myViewControllers = tabBarController.viewControllers;
for (UINavigationController *navViewController in myViewControllers)
{
    [navViewController view];
}
person Or Arbel    schedule 14.12.2012
comment
Не повезло. Я думаю, что проблема может возникнуть из-за того, что у меня странная структура: мой UIViewController встраивает UITabBarController, который встраивает несколько UINavigationController, в которые встраивается UIViewController. Я попытался загрузить вид каждого из них, но он все еще не работает. - person syrio; 15.12.2012