Objective C回调和通知

时间:2010-07-20 07:23:01

标签: iphone objective-c

我是Objective-C的新手,而不是全职程序员。我开始理解模型 - 视图 - 控制器设计模式,以区分UI和模型。因此,用户执行操作,视图控制器向委托(模型)发送消息。但我不确定将代理发送回视图控制器的最佳方法是什么。

例如,用户按下一个按钮,VC向Delegate发送消息。那部分我明白了。然后委托采取行动,然后委托者想要更新VC(例如,更新标签)。

所以我错过(或忘记了)是如何完成的,同时保持UI和模型之间的分离。我想我可以使用通知中心。或者我想我可以让视图控制器将回调传递给委托。或许还有另一种我不知道的选择。有人可以给我一个推荐吗?

3 个答案:

答案 0 :(得分:4)

我认为你对MVC范式有点误解。模型永远不应该是视图的委托,因为模型应该没有任何视图类的依赖关系或知识。通常,视图会向其委托或目标(如果您正在使用目标/操作)发送消息,该消息通常是控制器(通常是iOS上UIViewController的子类)。然后,控制器访问模型中的数据,并可以更新任何需要更新的视图。我建议您阅读MVC fundamentals guide以获得更完整的解释。

答案 1 :(得分:0)

基本上你是对的,你可以自己做所有与通知相关的事情(即使用NotificationCenter),但由于我们在这里谈论UI-Stuff,我强烈建议你使用IBAction - 方法和IBOutlet - 您的代码中的属性,您可以轻松地将它们连接到UI-Elements,它们的接口生成器中的回调。

可以在此处找到有关此主题的基本介绍: iPhone SDK Interface Builder basic training 我希望它不是太基本的强硬,我可以引导你走上正确的轨道。

答案 2 :(得分:-1)

首先,委托不是模特。

模型是被动的,只保存数据(DB,plist,数组,字典等) 虽然委托是为了对某些事件作出反应而存在的一些功能集 在您的情况下,委托更有可能成为视图控制器。

视图控制器应对用户的操作做出反应 如果按钮点击应该在某个标签中显示模型中的某些数据,那么视图控制器应该完成所有工作(接收用户的操作,从模型中获取必要的数据并将其显示在视图上......)。