【发布时间】:2014-04-20 20:35:16
【问题描述】:
我正在构建一个音乐播放器应用程序——在这个应用程序中,音乐播放器视图控制器将始终位于任何其他子视图控制器(导航视图、表格视图等)之上,我需要在任何潜在的子视图中采取行动被发送回播放器视图控制器(例如,用户在个人资料页面上选择“播放”,然后我将该事件发送回) 我的问题是最好的方法是什么?我提前道歉有点含糊,但我已经知道我可以实现它的三种方法。我只想知道什么是“正确”的方式。
这是我想到的三种方式:
1.Delegate 模式——将音乐播放器控制器传递给它的子控制器,并将其自身设置为每当传递该事件时的委托(因为第一个视图控制器是导航视图控制器,所以我想我会必须将它向下传递几个级别,这意味着几个代表(如果我错了,请纠正我))
2.Notification Center -- 为特定通知注册播放器视图控制器,封装从其他视图控制器发送的数据,以便我可以执行我的操作。
3. 播放器视图控制器的单例访问 - 基本上允许从任何视图控制器访问播放器视图控制器。
感谢任何帮助引导我朝着正确的方向前进。我可以通过这两种方式中的任何一种来做到这一点,但由于这是一个“学习”应用程序,我很想把它做好。
【问题讨论】:
-
如何让您的音乐播放器视图控制器始终位于顶部?什么是控制器层次结构?
-
我有一个“播放器视图控制器”,这个视图控制器有一个指向导航控制器的容器视图。导航控制器处理一切,除了播放器本身,它是从“播放器视图控制器”上的框架底部弹出的一组视图
-
好的,那么我不喜欢为该结构使用通知。听起来您只是将信息发送到一个对象,即容器视图控制器。您可以使用 self.view.window.rootViewController 从任何其他控制器访问该控制器,并使用该引用来调用该控制器中的任何方法或设置任何属性值。
标签: ios objective-c uiviewcontroller