如何围绕应用程序制作UI元素可以跟踪自己的状态

时间:2012-02-03 04:54:14

标签: ios cocoa-touch

我有一个网络客户端iOS应用。有一个“控制器”对象负责从网络接收更新。它应该将它们存储/转发到应用程序中的各个可见页面。一个页面可能需要一些数据,一个页面可能需要一些其他部分。有重叠。

例如,需要根据网络上设备的状态突出显示或不突出显示按钮。不同页面上的按钮可能需要反映此状态。

我需要确定我的各种视图控制器是否需要处理此问题,或者UI元素本身是否可以执行此操作。在我的示例中,我将需要UI按钮来响应事件,可能基于它的“标记”字段。

我已经考虑过实现一个类别来“包装”各种UI元素,但我想使用storyboard布局。这看起来很复杂。或者,我可以在UI元素上设置标记,并让封闭视图控制器将所有这些集合到UI元素的字典中,并使用标记作为键进行观看/更新。还是...?

我想我想要了解哪种型号可能是最好的。我需要这个灵活且适应性强,所以我不能为每个UI项目提供一堆代码和IBOutlets。我试图保持一切尽可能通用,这样当我需要进行更改时,我可以添加UI元素,设置它们的标签,并让它们的封闭视图控制器来处理它们。

由于

1 个答案:

答案 0 :(得分:0)

我认为你应该这样考虑一下:

  • 您的应用需要一个代表外部状态的模型 世界;在您的情况下,网络上的设备。
  • 你的应用程序的另一部分(可能是一个单独的部分 计时器)正在跟踪世界的状况(可能正在做的事情) GETS使用NSURLConnection)然后更新你的模型。
  • 您的ViewControllers向用户显示视图,观察状态 您的模型,告诉视图在模型时更改。 (例如,您的viewcontroller会观察到模型中的设备将状态更改为脱机状态,然后设置相应的myButton.enabled = NO)。

查看iOS key-value observing文档以了解有关详情。如果您认为观察模型的相同方面有很多观点,请考虑使用NSNotification center