我正在开发一款Titanium Appcelerator iOS应用程序,其中包含一个初始仪表板屏幕和两个可以从仪表板访问的独立屏幕。
我已经设置了我的应用程序以使用导航控制器,所有内容都是使用自定义事件侦听器从main.js文件控制的。我这样做,以便我可以将每个屏幕的代码分成单独的文件。
问题是,每加载一个屏幕,我必须打开导航堆栈上的窗口,然后将所有元素添加到它。这适用于其中一个屏幕,因为它只包含一些视图和标签。但是,另一个屏幕有一个MapView,用户看到屏幕打开后需要3秒左右才能加载。
处理此问题的正确方法是什么?有没有办法在打开之前预加载窗口,但是要保持我当前的架构?
我以更加混乱和具体的方式提问这个问题,here但我认为这个一般性问题适用于更多人,因为我使用的架构风格相当普遍。
答案 0 :(得分:2)
我认为您的方法相当典型......遗憾的是,我不知道有任何方法可以预加载窗口内容。通过包含地图画布的静态图像,您可以在地图视图加载时改善用户体验(同样,Apple的UI指南建议Default.png是应用程序本身的基本界面的图像,以给出印象它正在快速加载)。您还可以以Ti.UI.ActivityIndicator
的形式添加加载微调器。这两个都可以默认添加到窗口,然后在地图视图的load
事件中显示地图时隐藏。我认为他们可能会帮助让3秒等待看起来不那么痛苦。
我在你的另一篇文章中注意到,即使你没有主动获取用户的GPS位置,你仍然观察到地图仍然需要很长时间才能加载。虽然如此,您可以通过在应用启动后立即获取位置来节省一些时间,然后使用您正在使用的自定义事件将其传递到地图窗口,这样就可以直接在用户的位置初始化地图,而不是而不是假位置。
答案 1 :(得分:0)
对于我开始使用https://github.com/vuinguyen/NavController
的导航控制器它对ios / android非常有效,而且git代码很简单,很容易理解。它是Kevin Whinnery在很久以前推出的增强版。我一直在3.0中使用它,没有任何具体的投诉。我已经添加了抑制本机ios导航标题的功能,但除此之外它还没有。
答案 2 :(得分:0)
我不这么认为使用完全相同的架构。在初始加载应用程序时,您可以在一个窗口中加载所有视图,而不是使用多个窗口。然后,通过更改zIndexes
来修改当前显示的那个