【问题标题】:Best practice delegates and modalViewControllers最佳实践委托和 modalViewControllers
【发布时间】:2013-10-31 14:58:13
【问题描述】:
只是我一直在思考的一个问题,“传统上”对于模态视图控制器,呈现的“父”视图控制器应该关闭呈现的子视图。
Apple 已经声明呈现的孩子不应该自我解雇,因此我倾向于设置一个委托协议只是为了解雇一个模态视图控制器。
这似乎有些矫枉过正,
我想知道,既然目标 C 无论如何都是通过引用传递的,并且不会有性能成本,我不能在实例化期间将呈现父视图控制器的引用传递给模态呈现的子视图控制器,然后创建一个方法回调家长解雇孩子?
对不起,如果这是一个愚蠢的问题...
【问题讨论】:
标签:
ios
objective-c
uikit
modalviewcontroller
【解决方案1】:
您通常为此类设置委托/协议的原因是它使您的代码更少coupled。假设您想稍后将您的视图呈现为弹出框或子视图?您可能认为这不是必需的,但随着项目的发展,它可能会发生。
由于父控制器处理自己的模式、子视图和弹出框,它知道当按下退出按钮(或其他操作)时该做什么。模态(在这种情况下)不一定(也不应该!)知道它是如何呈现的,因此它应该告诉它的委托并让那个控制器处理它(popViewController,dismissViewController,removeSubview,等等...)。这是理解 OOP 的重要组成部分,有助于保持代码更简洁。
不,我认为这不是一个愚蠢的问题。