gpt4 book ai didi

iphone - 自定义 UIView 和 UIViewController 最佳实践?

转载 作者:行者123 更新时间:2023-12-03 18:43:15 24 4
gpt4 key购买 nike

我目前有一个简单的 iPhone 应用程序,它加载 UIView 的自定义子类。目前整个应用程序只有一个 Controller ,尽管有多个 UIView 可以在逻辑上分隔程序。

我当前的结构如下所示:

mainView : UIScrollView
\__ has one subView : myCustomUIView : UIView
\__ has many subSubView : myOtherCustomUIView : UIView

我希望这一点很清楚;当然,冒号代表继承。

我的问题是这样的:我需要在最低级别 subSubView 拦截事件。如果需要的话,我可以在应用程序 Controller 中执行此操作,但是我应该有一个 subSubViewController 吗?我也应该有一个 subViewController 吗?

如果是这样,有人可以向我指出一些手动执行此操作的引用吗?我当然可以创建类,但将它们连接到自定义 View 似乎并不简单。除了保存窗口对象的主 Nib 之外,我根本没有使用界面生成器。

我的主要困惑来自于当我将 View 嵌套在具有不同 Controller 的 View 中时会发生什么。假设我确实有一个 subSubViewController,但 mainView 仍然有它的 mainViewController。由于 subSubView 包含在 mainView 中,这不会引起一些问题吗?

我应该为此使用委托(delegate)吗?

任何朝着正确方向的插入将不胜感激。

最佳答案

View 和 View Controller 成对存在。每个 View Controller 控制一个 View 和该 View 的 subview 。这是必要的,因为 View Controller 位于事件的响应者链中。如果多个 View Controller 在同一个 View 中处于事件状态,则响应者链会变得困惑。

标准 View Controller 没有 subController 属性,并且不了解同一链中是否有另一个 Controller 处于事件状态。导航和选项卡栏 Controller 的存在正是为了处理分层 Controller 。然而,他们通过将一个 View / View Controller 对交换为另一对来实现这一点。您不能使用导航或选项卡栏 Controller 为 subview 提供不同的 Controller 。

因此,无论您为任何人 View 拥有多少个 subview ,最终每个屏幕都只有一个 Controller 。

您可能需要重新考虑您的设计。如果每个 subview 都需要高度可定制的行为,您可能希望将它们移动到 Controller 层次结构中的各个 View ,例如在主从设计模式中。

如果您确实必须在同一屏幕上显示所有 subview ,那么我建议您查看 UITableView 和 UITableViewController 如何处理事情。 (您也许可以只使用修改后的表格 View 。)表格 View 是一个 ScrollView ,它包含单元格、节标题、页眉和页脚的多个 subview 。它通过捕获表格 View 中的触摸并确定哪个单元格 View 被触摸,然后采取适当的操作来管理此问题。

如果您需要为每个 subview 提供高度自定义的行为,则可以使用委托(delegate)模式并为每个 subview 分配不同的委托(delegate)对象。 View 可以捕获自己的触摸并调用自己的委托(delegate)。

ScrollView 实现自定义触摸行为可能很棘手,因为 ScrollView 比其他 View 在更高的级别上捕获触摸,以便它可以确定是否需要滚动。

关于iphone - 自定义 UIView 和 UIViewController 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3300183/

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