gpt4 book ai didi

cocoa-touch - View 逻辑应该放在 UIView 中还是(如果适用)它的 UIViewController 中?

转载 作者:可可西里 更新时间:2023-11-01 03:55:31 25 4
gpt4 key购买 nike

我最近发现 UIView 应该只有 UIViewController 填充整个窗口(或者由另一个 UIViewController 管理,例如UINavigationControllerUISplitViewController)。此引文来自 UIViewController 的文档:

You should not use view controllers to manage views that fill only a part of their window—that is, only part of the area defined by the application content rectangle. If you want to have an interface composed of several smaller views, embed them all in a single root view and manage that view with your view controller.

我通常将我的 View 逻辑放在 UIView 中,即使它是由 UIViewController 管理的,但我经常发现自己需要访问 UIViewController 的属性,例如它的 navigationController 属性。然而,UIViews 不应该知道他们的 UIViewController。

我的结论是, View 逻辑应该在 UIView 的 UIViewController 存在时进入,否则进入 UIView 本身。

或者,为不是 UIViewController 的子类的 View 创建 Controller 类是否更好? UIPopoverController(一个 NSObject 子类)似乎遵循这种模式,尽管在大多数情况下(UIButton 等) View 似乎没有专用的 Controller 类。

最佳答案

应用程序逻辑不应该放在 UIView 中。时期。 UIViewController 的目的是管理 View 及其 subview ,在大多数情况下,它是逻辑的适当位置。 UIKit 遵循模型- View - Controller 范式。模型保存数据, View 显示数据并接受输入, Controller 管理其他两层之间的交互。这就是为什么 Controller 是应用程序逻辑的逻辑位置。在 iOS 中,UIViewController 及其子类是常用的 Controller 类。我建议 reading up on Apple's guidance以便更好地理解这种模式及其在 iOS 中的使用方式。

Apple 文档中的引述告诉您,您不必为每个标签或按钮创建一个 UIViewController。您为应用程序的每个“页面”或“屏幕”创建一个,并使用它来管理该 View 中的控件。请注意,UIKit 具有管理 TableView 、选项卡 View 和导航 View 的类。这是您将使用 UIViewController 管理的对象级别。

我建议浏览 SDK 中包含的 iOS 示例。它们应该让您很好地了解框架期望应用程序的结构。

关于cocoa-touch - View 逻辑应该放在 UIView 中还是(如果适用)它的 UIViewController 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688025/

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