gpt4 book ai didi

iphone - iPhone 应用程序中 View Controller 必须始终有委托(delegate)吗?

转载 作者:行者123 更新时间:2023-12-03 17:44:55 24 4
gpt4 key购买 nike

我正在学习如何开发自己的 iPhone 应用程序,但我很难理解某些概念。

首先,我说的对吗?对于每个 View ,都必须有一个 View Controller ?对于每个 View Controller ,都必须有一个委托(delegate)吗?

另外,mainWindow.nib 的作用是什么?我读过的大多数教程似乎根本没有触及那个 Nib 。经常发生的情况是将一个 NavigationController 设置为根 Controller ,它将另一个 ViewController 插入堆栈,并且该 ViewController 将有另一个与之关联的 Nib 。

那么我可以假设我可以安全地忽略主窗口 Nib 吗?

最佳答案

这都是关于MVC (Model View Controller) ,不是吗?

模型,这取决于您 - 您的应用程序是做什么的?将其视为后端,即应用程序的引擎,不受字体大小决定和触摸事件的影响。

View,苹果几乎是为你写的。您可以使用它们的文本字段、表格和 ImageView 。您可以使用 Interface Builder 将它们组装到 GUI 中(打包为 .nib)。您很少需要对标准 View 元素进行子类化(在游戏中,您希望绘制自定义 View ,因为您的所有绘图可能都是自定义的)。如果这有助于您管理它们,您可以将 GUI 的不同部分分解为不同的 .nib 文件。这完全取决于你。

Controller ,因此您可能需要做一些工作才能使 GUI 能够代表您的模型。您需要一些 Controller 。多少?然而,许多都是您可以管理的。如果你有一个包含 2 个 subview 的 View ,它们每个都需要一个 View Controller 吗?不,可能不是。将 View 连接到模型的代码有多复杂?

一些 GUI 模式非常常见,Apple 甚至为您编写了 Controller 代码。 EG UINavigationBar 的 Controller ,UINavigationController。因此,如果您的应用程序具有需要导航的分层 View ,并且需要显示导航栏,则可以使用 UINavigationController 的实例,而不是编写自己的类。耶!

当然,UINavigationController 代码(或任何其他 viewController)无法神奇地知道如何与我们的模型、 View 集成,不是吗?不,不能。一般来说,在 Cocoa 中,如果有一类对象主要是现成的,但也有可选的可配置行为 - 允许我们根据我们的需要定制它 - 它是通过委托(delegate)来完成的强>。即而不是子类化UINavigationController,我们告诉它的特定实例在哪里可以找到(为了需要一个更好的术语)它的自定义行为。

为什么?假设您有一个 navigationController、一个 tableView 和一个文本字段。 UINavigationController 主要满足您的导航需求,但每次用户移动到新 View 时,您都必须播放疯狂的 QUACK 声音。 UITableView 几乎完全满足了表格中您所需的所有内容,除非您确实希望首页表格中的第三行的高度是其他行的两倍。标准的现成 UITextField 几乎可以满足您的文本字段需求,除非您需要文本字段仅在用户面向北时才可编辑。处理这个问题的一种方法是创建 3 个新类,一个自定义 UINavigationController、一个自定义 tableView 和一个自定义文本字段,并使用它们。通过委托(delegate),我们可以按原样使用类,并让一个对象成为所有 3 个实例的委托(delegate) - 更加干净。

委托(delegate)大部分是可选的,文档会告诉您何时进行,这取决于您以及您是否需要该自定义行为。

关于iphone - iPhone 应用程序中 View Controller 必须始终有委托(delegate)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2895611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com