0

我的不是真正的编程问题,而是关于 IOS 编程中的模型-视图-控制器设计模式的设计问题。我是 IOS 新手,但我真的想以正确的方式做事。所以我有这个视图可以做一些动画,但我想在动画结束时“通知”控制器。我知道视图不能引用控制器。阅读页面:https ://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/StreamlineYourAppswithDesignPatterns/StreamlineYourApps/StreamlineYourApps.html

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

  • 通知,即使图中不存在也可以
  • 控制器轮询视图属性的状态,直到动画完成(如果我没记错的话可能会阻塞主线程)
  • Key Value Observing,看起来就像一个通知。

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

4

2 回答 2

2

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

于 2013-07-14T00:45:37.577 回答
0

由于您没有提供任何代码,我假设 ViewController 是导致动画的对象。如果是这样,那么动画的结束应该在一个块内处理。例子:

[UIView animateWithDuration:0.5
                 animations:^(void) { your animation code here }
                 completion:^(BOOL finished) { your completion code here }];
于 2013-07-13T22:31:00.047 回答