2011-06-09 94 views
4

我读过,UITabBarController的子类化是一个不推荐的做法。但是,如何才能实现延迟加载标签栏项目的视图?我正在玩一个标准的应用程序视图层次结构:在我的主应用程序委托文件(应用程序:didFinishLaunchingWithOptions :)中,我实例化一个具有4个选项卡栏的项目/图标的UITabBarController的自定义子类。我只需要加载第一个标签栏项目的第一个视图 - 其他视图应该根据请求延迟加载。所以,在应用程序中:didFinishLaunchingWithOptions:,我加载欢迎视图并将其推入第一个UINavigationController(1)。其他标签栏项目是空的UINavigationControllers - (2,3,4)。这里是我的UITabBarController的自定义子类,这也是删除自己:iOS: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 :)

所以,回到这个问题,还有哪些(更多的苹果投诉)选项可以实现延迟加载的标签栏项目操作处理?

回答

4

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

您可以通过在每个视图的viewdidload上放置日志并查看它何时被调用来检查。

+1

谢谢。有时候一个问题根本不是问题:) – Centurion 2011-08-07 21:12:37

+0

我知道对:D但是我们从中学到了东西,这一切都很好! – REALFREE 2011-08-07 23:12:25