iOS:UITabBarController - 项目视图的延迟加载

时间:2011-06-09 12:12:29

标签: objective-c ios uitabbarcontroller lazy-loading

我已经读过,对UITabBarController进行子类化是一种非推荐的做法。但是,如何实现延迟加载标签栏项目的视图?

我正在玩一个标准的应用程序视图层次结构:在我的主应用程序委托文件(application:didFinishLaunchingWithOptions :)中,我正在使用4个标签栏项目/图标实例化UITabBarController的自定义子类。我只需要加载第一个标签栏项的第一个视图 - 其他视图应该根据请求懒惰加载。所以,在application: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:)

那么,回到问题,还有什么其他(更多苹果投诉)选项来实现延迟加载的标签栏项操作处理?

1 个答案:

答案 0 :(得分:5)

如果我正确理解您的问题,默认情况下TabbarController会以惰性模式加载项目的视图。也就是说,除非您单击标签栏上的某个项目,否则它将不会被加载。

您可以通过在每个视图的viewdidload上添加日志来查看它,看看它何时被调用。