UIViewController Intercommunication,是否有任何一种强制UIViewController更新的方法?

时间:2011-10-25 02:18:45

标签: iphone objective-c ios

我正在创建一个运行计算器界面的UIViewController,而另一个UIViewController处理绘制图表。

当用户按下图形按钮时,计算器会提示图形重绘。然后,图形将对计算器上的协议方法执行回调,以获取每个给定x坐标的y值。

我想知道处理这种通信的标准方法是什么?我觉得我应该可以在setNeedsDisplay上调用类似于UIViewController的内容(我知道这实际上只是UIView方法),但我感觉我是将不得不用类似的方法编写另一个协议。我缺少某种updateViewController方法吗?

理想情况下,我希望我的计算器UIViewController仅将图表知道为UIViewController,而图表通过我定义的协议知道计算器。

3 个答案:

答案 0 :(得分:1)

据我所知,UIViewController中没有任何内容可以完全满足您的需求。你可能需要按照你的建议做一些协议,然后[yourViewController.view setNeedsDisplay:]。

希望有所帮助。

答案 1 :(得分:1)

有很多方法可以做到这一点,之前已经在这里提出过。例如:

iPhone how to pass data between several viewcontrollers

在您的特定情况下,我会使用NSNotification。在viewController中订阅它需要重绘并发布来自另一个的通知。

答案 2 :(得分:1)

你有几种方法可以做到这一点。

  1. 目标/行动
  2. 代表
  3. NSNotificationCenter
  4. KVO(键值观察)
  5. 在您的情况下,KVO似乎是最好的选择。基本上,你的图表在计算器界面上绘制取决于(如果我理解正确的话),所以你观察一些变量(读取键)进行更改。请看this document to learn more

    KVO也可以让您优化图形绘图,因为您可以获得先前的值,新值等。事实上,根据定义:

      

    键值观察是一种机制,允许对象通知其他对象的指定属性的更改。