一个我一直在思考的问题,'传统上'与模态视图控制器一起呈现'父'视图控制器应该解雇所呈现的孩子。
Apple已声明所呈现的孩子不应该自我解雇,因此我倾向于设置一个委托协议来解雇模态视图控制器。这似乎有点矫枉过正,
我想知道,因为目标C无论如何通过引用传递,并且不会有性能成本,我不能在实例化期间将呈现的父视图控制器的引用传递给模态呈现的子视图控制器然后创建方法回电给父母解雇孩子?
对不起,如果这是一个愚蠢的问题......
答案 0 :(得分:3)
您通常为此类设置委托/协议的原因是它使您的代码更少coupled。假设您想稍后将视图显示为弹出窗口或子视图?您可能认为这不是必需的,但可能随着项目的发展而增长。
由于父控制器处理自己的模态,子视图和弹出窗口,因此当按下退出按钮(或其他一些操作)时,它知道该怎么做。模态(在这种情况下)不一定(也不应该!)知道它是如何呈现的,因此它应该告诉它的代理并让控制器处理它(popViewController
,dismissViewController
, removeSubview
等等......)这是理解OOP的重要部分,有助于保持代码清洁。
不,我认为这不是一个愚蠢的问题。