2011-12-28 58 views
0

我想在仅限iOS5的iPad应用程序中编写我自己的UITabbarController替换项。很像我在GitHub MHTabBarController上找到的那个。我阅读代码,发现他分配他的所有viewControllers前期:在iOS 5遏制视图中延迟加载UIViewController

ListViewController *listViewController1 = [[ListViewController alloc] initWithStyle:UITableViewStylePlain]; 
ListViewController *listViewController2 = [[ListViewController alloc] initWithStyle:UITableViewStylePlain]; 
ListViewController *listViewController3 = [[ListViewController alloc] initWithStyle:UITableViewStylePlain]; 

NSArray *viewControllers = [NSArray arrayWithObjects:listViewController1, listViewController2, listViewController3, nil]; 
MHTabBarController *tabBarController = [[MHTabBarController alloc] init]; 

tabBarController.viewControllers = viewControllers; 

二传手的实施看起来是这样的:

- (void)setViewControllers:(NSArray *)newViewControllers 
{ 
    _viewControllers = [newViewControllers copy]; 
    for (UIViewController *viewController in _viewControllers) 
    { 
      [self addChildViewController:viewController]; 
      [viewController didMoveToParentViewController:self]; 
    } 
} 

setSelectIndex:的setter然后得到正确的UIViewController并呼吁addSubview自我与UIViewControllers视图。

这让我感到不可思议,他完全发起了三个ListviewController。我发现自己记得有关使用延迟加载实现大型scrollViews的文章,但是我无法在Google上找到任何内容,也不记得实现细节。

所以问题是,我该如何实现延迟加载,以便UIViewController将像使用关联UIViewController的Tabbar上的用户选项卡一样加载。

+0

我认为这是你的问题的答案,如果你仍然需要它:http://stackoverflow.com/a/1197838 – 2012-03-05 02:32:05

回答

0

您应该执行延迟加载。你永远不知道UIViewController有多沉重。那么这取决于你实施了多少。你已经有按钮来切换标签?如果是这样,点击后,只需将相应的UIViewController添加到UIView即可。当你点击另一个时,你可以隐藏它并添加另一个UIViewController

+0

我会有按钮切换选项卡。我记得点击一个按钮后,按钮会调用一个带索引的方法来切换视图控制器的内容。使用索引,它将查找VC中阵列中匹配的VC(由于iOS 5的限制,该阵列已经存在)。从那里开始,我不知道该怎么做 - 你的意思是NSClassFromString()? – 2011-12-28 14:33:59

+0

几个月前,我自己做了一个自定义的UITabBarController,我做了什么,是保持对所有UIViewControllers的引用,当我需要切换时,我将删除从UIView中显示的那个,并添加新的。 – Peres 2011-12-28 14:51:50

+0

好的,你不会加载视图,但你必须分配空间并初始化VC,对吧? – 2011-12-29 08:58:09