0

我正在设计一个管理热水箱的应用程序。该应用程序对服务进行 RESTful API 调用以;

  1. 获得罐内各层的温度曲线。
  2. 允许用户使用计时器(如浸入式计时器)自定义控件来设置打开/关闭加热元件的时间。

因此,作为第一次剪辑,我在导航控制器中有两个选项卡;1. 显示罐图片的图形,刻度显示温度。2. 自定义控件,如商用家用定时器,带有两个同心环,允许用户指向和拖动 30 分钟的槽来设置加热元件的时间。

我的两个自定义视图都运行良好。我不敢说我​​被困在一个非常简单的观点上——即使在阅读了所有 Apple 的 ios 文档之后,并且希望得到一些帮助。

数据服务器(运行嵌入式 Linux 的 BeagleBone)实现了 2 组 RESTful API,一组处理油箱温度,另一组用于读取和更新计时器。

  1. 是否最好使用视图控制器启动应用程序,该视图控制器实例化模型,发布 API 并显示“正在加载...”,然后填充单个应用程序范围的数据模型。

  2. 让每个视图控制器(坦克的图像和计时器控制器)填充自己的(单独的)模型?

  3. 对我来说最大的问题是(尽管在 Smalltalk、C++、Java... 工作了多年)推荐的方法是什么;

    • 实例化视图控制器
    • 如果模型尚未加载,则加载/显示带有“忙碌”微调器的视图

我的应用程序对于 GCD 或 KVO 来说不够复杂。这基本上是一个“显示视图,调用 Web 服务读取数据”,“修改数据”,“调用 Web 服务替换数据”

基本上,我相信我的问题是,当视图出现在屏幕上时,确定控制器具有模型或具有仍在加载数据的模型的最佳实践是什么?

很抱歉这个冗长的问题。

4

1 回答 1

1

你问了一个非常好的问题,关于移动应用程序中一个非常常见的任务。我的建议是

  1. 由于您的两个选项卡确实没有公共数据,因此问题简单地归结为“如何使用远程数据初始化视图控制器”。

  2. 如果用户在没有远程数据的情况下无法使用您的应用程序,

    • 只需在 [vc viewDidLoad] 中显示加载视图,然后开始从服务器异步获取数据;你的 vc 应该实现 NSURLConnectionDelegate 来监听回调
    • 当从服务器成功获取数据时,关闭加载视图,并将数据呈现给用户
    • 如果数据获取失败(由于网络故障或服务器停机),向用户显示警报视图,然后重试数据获取;如果多次获取失败,告诉用户稍后再试
    • 您可以使加载视图更漂亮,以提供更好的用户体验;请注意,加载视图应涵盖所有按钮/控件,因此用户不能在数据获取期间弄乱您的应用程序状态
  3. 如果用户可以在没有远程数据的情况下使用您的应用程序,那就另当别论了。在这种情况下,您不应该使用加载视图,而应该在后台静默获取数据。由于这似乎不是您的情况,因此我不会通过这种情况使答案复杂化。

于 2013-01-21T07:50:52.630 回答