ios - 最佳实践委托(delegate)和 modalViewControllers

标签 ios objective-c uikit modalviewcontroller

只是我一直在思考的一个问题,“传统上”对于模态视图 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 处理它( popViewControllerdismissViewControllerremoveSubview , ETC...)。这是理解 OOP 的重要组成部分,有助于保持代码更简洁。

不,在我看来,这不是一个愚蠢的问题。

关于ios - 最佳实践委托(delegate)和 modalViewControllers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709864/

相关文章:

objective-c - 如何强制 NSWindow 出现在每个应用程序的前面?甚至全屏应用程序

cocoa-touch - UINavigationBar 右键不显示

ios - 您的二进制文件未针对 iPhone 5 xcassets 进行优化

ios - Apple M1 芯片上的 Firebase 分析和其他模块

ios - Segue 反推效应

iphone - 如何从 CGPoint 或 CGPath 获取 UIBezierPath

ios - 无法使用参数列表 '((_) -> _)' 调用筛选器 [已实现可等式]

objective-c - NSImage imageNamed : for Mac Mini returns small icon instead of high-res

swift - 如何从强度值重建灰度图像?

ios - 如何在平移时将 UIView 移动到另一个父级?