1

我正在开发一个 Titanium Appcelerator iOS 应用程序,该应用程序包含一个初始仪表板屏幕和 2 个可以从仪表板访问的独立屏幕。

我已经将我的应用程序设置为使用导航控制器,并且一切都通过使用自定义事件侦听器的 main.js 文件进行控制。我这样做是为了将每个屏幕的代码分成单独的文件。

问题是每次加载屏幕时,我都必须打开导航堆栈上的窗口,然后将所有元素添加到其中。这对于其中一个屏幕来说很好,因为它只包含一些视图和标签。但是,另一个屏幕有一个 MapView,在用户看到屏幕打开后需要 3 秒左右才能加载。

处理这个问题的正确方法是什么?有没有办法在打开之前预加载窗口但保留我当前的架构?

我在这里以更加混乱和具体的方式提出了这个问题,但我认为这个一般性问题适用于更多人,因为我使用的架构风格相当普遍。

4

3 回答 3

2

我认为您的方法相当典型……不幸的是,我不知道有任何方法可以预加载窗口的内容。您可以通过包含地图画布的静态图像来改善地图视图加载时的用户体验(就像 Apple 的 UI 指南建议 Default.png 是应用程序本身的基本界面的图像以给人留下印象一样它正在快速加载)。您还可以以Ti.UI.ActivityIndicator. 这两个都可以默认添加到窗口中,然后在您在地图视图的load事件中显示地图时隐藏。我认为他们可能会帮助让这 3 秒的等待看起来不那么痛苦。

我在您的另一篇文章中注意到,即使您没有主动获取用户的 GPS 位置,您观察到地图仍然需要很长时间才能加载。虽然确实如此,但您可以通过在应用程序启动时立即获取位置,然后使用您正在使用的自定义事件将其传递到地图窗口来节省一些时间,这样地图就可以直接在用户的位置上初始化,而不是而不是一个虚拟的位置。

于 2013-03-26T20:04:33.830 回答
0

对于导航控制器,我开始使用https://github.com/vuinguyen/NavController

它适用于 ios/android 并且 git 代码简单明了且易于理解。它是 Kevin Whinnery 很久以前推出的增强版。我一直在 3.0 中使用它,没有任何具体的抱怨。我添加了抑制本机 ios 导航标题的功能,但除此之外它直接插入。

于 2013-03-27T13:56:48.543 回答
0

我不这么认为使用完全相同的架构。首次加载应用程序时,您可以在一个窗口中加载所有视图,而不是使用多个窗口。然后,通过改变 zIndexes 来修改当前显示的那个

于 2013-03-27T14:39:43.467 回答