启动预加载,请稍后
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了启动预加载,请稍后相关的知识,希望对你有一定的参考价值。
参考技术A 预加载。我们在做有很多图片的页面的时候,出于用户体验的角度或是为了节约流量,以及减小服务器压力的角度,通常会将页面进行配置预加载,预加载是为了在页面打开后,能够流畅展示页面效果,对页面上的附件进行预先加载,当所有图片都加载完成,再显示该页面。通常使用预加载,都会有一个loading页面来展示目前附件加载进度,常见于大型的H5动画,优点是加载完成后,页面运行流畅。缺点是,在完整展示页面效果之前,就把所有页面上的附件全部加载出来,耗费的流量和时间比较长。
在应用程序启动时预加载 UITabBar 选项卡时出现问题(崩溃)
【中文标题】在应用程序启动时预加载 UITabBar 选项卡时出现问题(崩溃)【英文标题】:Trouble preloading UITabBar tabs on application launch (crash) 【发布时间】:2014-03-07 03:10:33 【问题描述】:我在 RSS 新闻阅读器中有 8 个标签。每个选项卡链接到一个导航控制器,该控制器链接到一个包含表视图的 masterViewController。我正在尝试遍历所有选项卡以在启动时预加载其表数据。我在 appDelegate didFinishLaunchingWithOptions 方法中尝试了以下代码:
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
NSArray *myViewControllers = tabBarController.viewControllers;
for (UINavigationController *navViewController in myViewControllers)
[navViewController.topViewController view];
但是,每当我启动应用程序时,我都会收到以下错误消息:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI
objectAtIndex:]: index 2147483647 beyond bounds [0 .. 7]'
这里有什么问题?
【问题讨论】:
这很奇怪......当您调用超出数组中当前内容的索引时会发生该错误。但是,由于您正在执行没有索引的 for 循环,因此它来自该 for 循环是没有意义的……您确定它来自这部分代码吗? 哦,刚刚想到一个可能的原因……一秒…… 【参考方案1】:我怀疑问题可能是这样的
NSArray *myViewControllers = tabBarController.viewControllers;
正在返回一个 UIViewController
s 数组(我认为应该如此),但您的 for 循环正在寻找 UINavigationController
s。
我不知道你想用那个循环做什么,因为你没有分配或使用 [navViewController.topViewController view];
做任何事情,但是如果你想访问你的 myViewControllers
数组中的视图控制器的视图, 使用:
for (UIViewController *viewController in myViewControllers)
variableWhatever = [viewController view];
【讨论】:
我正在关注这个帖子:link,以便在应用程序启动时预加载我所有选项卡的表数据。但是他们的解决方案不起作用,所以我想在我的 masterViewController 而不是 navigationController 上调用“view”。您的解决方案消除了崩溃,但仍然不会导致我的标签页预加载。 总而言之,我只是想遍历我所有的 masterViewControllers,并在它们上调用视图来强制加载每个选项卡的表数据。以上是关于启动预加载,请稍后的主要内容,如果未能解决你的问题,请参考以下文章