当 ViewController 在其方法中创建另一个 ViewController 时(比如 viewDidLoad 或 viewWillAppear),这是正确的吗?
就我而言 - 我有一个 View A,其中包含其他几个 View - B 和 C,它们本身非常复杂,因此为它们设计了特殊的 View Controller vcB 和 vcC,并且这些 View Controller 是在 vcA View 内创建的 View A 的 Controller 。
这样可以吗?例如,如果 vcA 将自己设置为 vcB 的委托(delegate),该怎么办?这意味着 vcB 将保留 vcA。在这种情况下,为了正确释放所有对象,我们需要在某个地方将 vcB 的委托(delegate)设置为 nil,但是什么时候这样做最好呢? viewWillDisappear:
,viewDidDisappear:
或smth。别的?
我确信这不是唯一出现问题的情况,因此我正在寻求您的意见,如何正确设计 View Controller 之间的此类交互。
最佳答案
我目睹了一种教条式的坚持,即一次只能运行一个 View Controller 。就我自己而言,如果可以简化整体设计(降低复杂性)并使设计管理更容易,我倾向于同时使用多个 View Controller 。正如您可以在 recent response that I posted 中读到的那样,在我看来,Apple 通过提供对自定义内容 View Controller 的支持,允许您同时操作多个 View Controller ,已朝着相同的方向前进。
乔纳·威廉姆斯 (Jonah Williams) 的博客值得一读,只是为了了解您可能需要处理的问题。但坦率地说,我没有遇到任何与他的建议相矛盾的问题。 (那篇文章大约有一年了。)
View Controller 的一个关键部分是保存它所管理的 View 的委托(delegate)方法。 View 实际上并不关心哪个对象充当其委托(delegate)。因此,如果您想要一个与单 VC 观点更加和谐的设计,您可以将委托(delegate)方法放入子类 NSObject 中,而不将其称为 View Controller 。不过,您很可能必须创建 UIViewController 中已有的一些方法。但这样你就不必将其称为 View Controller 。我,我只是子类化 UIViewCcontroller。
关于ios - UIView 和 UIViewController 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437980/