Iphone MVC设计问题,从视图通知控制器

Iphone MVC设计问题,从视图通知控制器,iphone,ios,model-view-controller,Iphone,Ios,Model View Controller,我的问题不是真正的编程问题,而是关于IOS编程中模型-视图-控制器设计模式的设计问题。我是IOS新手,但我真的想用正确的方式做事。所以我有这个视图,它可以做一些动画,但是我想在动画结束时“通知”控制器。我知道视图不能引用控制器。阅读本页: 在第一个图中,视图-控制器通信仅为用户操作(视图中的iActions)和控制器中的更新。我认为可能的解决方案: 通知,即使它在图中不存在也可以 控制器轮询视图属性的状态,直到动画完成(如果我没有错,可能会阻止主线程) 键值观察,似乎就像一个通知 您有什么想

我的问题不是真正的编程问题,而是关于IOS编程中模型-视图-控制器设计模式的设计问题。我是IOS新手,但我真的想用正确的方式做事。所以我有这个视图,它可以做一些动画,但是我想在动画结束时“通知”控制器。我知道视图不能引用控制器。阅读本页:

在第一个图中,视图-控制器通信仅为用户操作(视图中的iActions)和控制器中的更新。我认为可能的解决方案:

  • 通知,即使它在图中不存在也可以
  • 控制器轮询视图属性的状态,直到动画完成(如果我没有错,可能会阻止主线程)
  • 键值观察,似乎就像一个通知

您有什么想法或最佳实践可以交流吗?提前感谢

因为您没有提供任何代码,所以我假设ViewController是导致动画的对象。如果是这样,则动画的结束应在块内处理。例如:

[UIView animateWithDuration:0.5
                 animations:^(void) { your animation code here }
                 completion:^(BOOL finished) { your completion code here }];

虽然可以使用NSNotifications,但当您想要通知多个对象,或者您不知道要通知哪个对象时,最好使用NSNotifications。如果没有简单的方法从控制器获取对视图的引用,也可以使用它,但通常情况并非如此。
所以,你遗漏的一种方式,授权,可能是最好的方法。视图将定义一个委托协议,并在其动画结束时调用委托方法。控制器将自身设置为视图的代理,将实现该代理方法以适当地响应动画的结束。

否,视图是启动动画的视图。我无法在控制器中执行此操作,因为视图具有对子视图的引用,因此我不希望在视图控制器中执行此操作。谢谢,我认为通知是你最好的解决方案。谢谢,我没有考虑授权,似乎这是一个有效的方法。