PickerView didSelectRow:inComponent:vs. Key Value Observing

时间:2010-11-17 11:23:04

标签: iphone objective-c ios

我有两个UIPickerView个。当用户旋转其中一个选择器时,应更改一些文本标签以反映已选择的内容。现在有两个选项可以做到这一点:

  1. 实施didSelectRow:inComponent:并更改标签及其他任何视图
  2. 添加一个观察者,当UIPickerView更改其值时会触发该观察者。
  3. 我觉得第一个选项很快就会导致一个混乱的情况,你需要从委托到想要修改的视图的大量交叉引用。有没有理由为什么人们应该选择选项1而不是选项2?

    不幸的是,选项1是我在大多数教程中看到的。

1 个答案:

答案 0 :(得分:0)

我更喜欢委托路线,因为你是免费获得的,而且 - 对我来说 - 在实施时非常清楚。

当你说“我觉得第一个选项很快导致一个混乱的情况,你需要从委托到想要修改的视图的大量交叉引用时,我不确定你是什么意思。”我的阅读是你在堆栈上有多个视图,如果是这样的话,为什么在pickerview改变时直接更新它们呢?当新视图出现时,您无法检查模型并让视图自行更新吗?

这里有一些关于KVO优点的讨论: http://iphonedevelopment.blogspot.com/2009/02/kvo-and-iphone-sdk.html