只是我一直在思考的一个问题,“传统上”对于模态视图 Controller ,呈现的“父” View Controller 应该解雇呈现的 child 。
Apple 已经声明呈现的 child 不应该自我解雇,因此我倾向于建立一个委托(delegate)协议(protocol)只是为了解雇一个模态视图 Controller 。
这似乎有些矫枉过正,
我想知道,因为 Objective-C 无论如何都是通过引用传递的,并且不会有性能成本,我不能在实例化期间将呈现父 View Controller 的引用传递给模态呈现的 subview Controller ,然后再调用一个方法 parent 解雇 child ?
对不起,如果这是一个愚蠢的问题......
最佳答案
您通常为此类设置委托(delegate)/协议(protocol)的原因是它使您的代码更少coupled .假设您想稍后将您的 View 呈现为弹出框或 subview ?您可能认为这不是必需的,但随着项目的发展,它可能会发生。
由于父 Controller 处理自己的模式、 subview 和弹出框,它知道当按下退出按钮(或其他操作)时要做什么。模态(在这种情况下)不一定(也不应该!)知道它是如何呈现的,因此它应该告诉它的代表并让那个 Controller 处理它( popViewController
, dismissViewController
, removeSubview
, ETC...)。这是理解 OOP 的重要组成部分,有助于保持代码更简洁。
不,在我看来,这不是一个愚蠢的问题。
关于ios - 最佳实践委托(delegate)和 modalViewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709864/