iOS: UITabBarController - ленивая загрузка просмотров элементов - PullRequest
5 голосов
/ 09 июня 2011

Я читал, что создание подклассов UITabBarController - не рекомендуемая практика.Однако как тогда реализовать ленивую загрузку представлений элементов панели вкладок?

Я играю со стандартной иерархией представления приложения: В моем основном файле делегата приложения (application: didFinishLaunchingWithOptions :), я создаю экземпляр пользовательского подкласса UITabBarController с 4 элементами / значками панели вкладок.Мне нужно только загрузить первое представление первого элемента панели вкладок - другие представления должны загружаться лениво по запросу.Итак, в приложении: didFinishLaunchingWithOptions:, я загружаю приветствие и помещаю его в первый UINavigationController (1).Другие элементы панели вкладок - это пустые UINavigationControllers - (2, 3, 4).Вот мой пользовательский подкласс UITabBarController, который также является удалением самого себя:

@interface MainUITabBarController : UITabBarController <UITabBarControllerDelegate> {
}
@end

@implementation MainUITabBarController
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
   UIImageView *image = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"TableViewBG.jpg"]] autorelease];
   UIViewController *vc = [self.viewControllers objectAtIndex:item.tag];
   vc.view = image;
}
@end

В настоящее время вид второго элемента панели вкладок - просто UIViewController, но я скоро стану UINavigationController:)

Итак, вернемся к проблеме, какие другие (более жалобы от Apple) опции могли бы реализовать обработку действий элемента панели вкладок для отложенной загрузки?

1 Ответ

5 голосов
/ 03 августа 2011

Если я правильно понимаю ваш вопрос, по умолчанию TabbarController загружает вид элемента в режиме ожидания. То есть, если вы не нажмете определенный элемент на панели вкладок, он не будет загружен.

Вы можете проверить это, поместив журнал в viewdidload каждого представления и посмотрев, когда он вызывается.

...