我有 UIView
子类被添加到我的View Controller的主视图中 . 它包含音频播放器控件,并在播放音频项目时滑入 .
我已经更新了视图的UI以反映播放状态(经过的持续时间等)就好了 .
我想知道的是当按下控件或者擦除进度滑块时我应该如何与superview的VC对话 .
-
我应该让superview的控制器成为委托吗?
-
superview的控制器是否应该注册为KVO观察者并在视图中公开一些相关属性?
-
我应该使用通知中心并发布通知吗?
我想这些都是有效的,这不是一个更好的问题,而是哪一个适合我的情况 .
2 回答
使用UIControl目标操作,就像使用任何按钮,滑块或其他控件一样 .
KVO不合适,因为你会怎么看按钮?通过设置
wasPressed
?然后解开它?这将引起另一个触发器,你必须区分的那些!?它会变得凌乱 .我个人不喜欢这种通信的通知,因为它们只会导致无用的开销 . 除此之外,我不喜欢将我的代码功能基于字符串和比较这些字符串 . 你必须在全球某处创建它们,或者将它们写在多个空间中等等 - 不 . 而且您将不再拥有可预测的程序流程 .
我会去 delegation !它是干净的 . 您可以指定并查看谁调用了什么以及使用什么参数而不是通知中的一些随机对象 .
除此之外:你的问题可能会被关闭,因为它主要是基于意见的 .