【问题标题】:Lazy loading of UIViewController in an iOS 5 containment view在 iOS 5 包含视图中延迟加载 UIViewController
【发布时间】:2012-01-29 05:09:32
【问题描述】:

我想在仅限 iOS5 的 iPad 应用程序中编写自己的 UITabbarController 替换。很像我在 GitHub MHTabBarController 上找到的那个。我阅读了代码,发现他预先分配了所有的 viewController:

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;

setter 的实现如下所示:

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

setSelectIndex: 的设置器然后获取正确的 UIViewController 并使用 UIViewControllers 视图在 self 上调用 addSubview。

他用三个ListviewController 完全启动来实现它,这让我很烦。我发现自己记得有关使用延迟加载实现大型滚动视图的文章,但我在 google 上找不到任何内容,也不记得实现细节。

所以问题是,我应该为谁实现延迟加载,以便 UIViewController 将像标签栏上的用户标签一样加载,并带有关联的 UIViewController。

【问题讨论】:

标签: ios uiviewcontroller ios5 uitabbarcontroller lazy-loading


【解决方案1】:

您应该实现延迟加载。你永远不知道UIViewController 有多重。好吧,这取决于您实施了多远。您是否已经拥有切换选项卡的按钮?如果是这样,点击时,只需将相应的UIViewController 添加到UIView。当您单击另一个时,您可以将其隐藏并添加另一个UIViewController。

【讨论】:

  • 我会有按钮来切换标签。我记得在点击一个按钮后,该按钮会调用一个带有索引的方法来切换视图控制器的内容。使用索引,它将在一个充满 VC 的数组中查找匹配的 VC(由于 iOS 5 的包含,该数组已经存在)。从那以后我不知道该怎么做——你的意思是 NSClassFromString() 吗?
  • 几个月前我自己做了一个自定义的 UITabBarController,我所做的是保留对所有 UIViewControllers 的引用,当我需要切换时,我会从UIView 并添加新的。
  • 好吧,你不会加载视图,但你必须分配空间和初始化 VC,对吧?
  • 仅当您需要它们时。最后,您将拥有所有 3 个 UIViewController(如果用户转到所有 3 个选项卡)。如果用户只去了一个,则只会使用 1 个 UIViewController。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多