gpt4 book ai didi

model-view-controller - iOS布局;我不明白

转载 作者:可可西里 更新时间:2023-11-01 04:21:48 25 4
gpt4 key购买 nike

嗯,“不明白”太苛刻了;我已经让它工作,对我来说是一个合乎逻辑的设置,但它似乎不是 iOS 认为合乎逻辑的。所以我没有得到任何东西。

假设我有一个显示两条信息的应用;一个日期和一张 table 。根据 MVC 方法,我在这里使用了三个 MVC,一个用于日期,一个用于表格,另一个将这两个 MCV 放入屏幕,将它们连接起来。

主 MVC 知道如何/在何处布局两个子 MVC。每个细节 MVC 仅在主 MVC 指定的范围内处理自己的子项。像这样的东西:

- (void)loadView {
MVC* mvc1 = [[MVC1 alloc] initwithFrame:...]
[self.view addSubview:mvc1.view];

MVC* mvc2 = [[MVC2 alloc] initwithFrame:...]
[self.view addSubview:mvc2.view];
}

如果以上是合乎逻辑的(对我来说是这样),那么我希望任何 MVC 类都有一个构造函数“initWithFrame”。但是 MVC 没有,只​​有 View 有这个。

为什么?

如何正确布局嵌套的 MVC? (当然我没有这两个,但是细节MVC又有子MVC。)


谢谢大家的回复。我将研究提供的链接。

让我试着再解释一次我的问题,希望能让它更清楚。请注意,我已经发现我的 View 与 iOS 不匹配,因为我不喜欢我的代码的去向。

是的,我将 UIViewController 称为“MVC”,因为目前对我来说它实现了 MVC 的所有方面;它有 Controller 代码和嵌入式 View ,而且 Controller 通常还保存和提供数据(所有 TableView 示例都是这样实现的)。

MVC 可以存在于多个层面;基本上 UITextField 可以(应该?)是一个 MVC;有一个 View ,但也涉及您不想与其他代码混合的 Controller 逻辑。封装。例如:Java 的 Swing JTextField 有一个 MVC。 JTable、JList、......嵌套在其他 MVC 中以构建整个屏幕的多个 MVC 模式也是如此。

当某些平台说它使用 MVC 模式时,这是我所期望的。因此,当我对表进行编码时,我创建了一个 MVC,并且只将带有日期作为参数的 loadData 消息发送给它。它需要自己处理其余部分。我有一个可以滑入的 Detail MVC;然后我告诉它它需要显示的对象,它需要自己处理其余的事情。封装。

所以我有很多带有嵌入式 UIView 的 UIViewController。这不是这样做的方法......

最佳答案

另一个潜在的链接是 WWDC 2010 关于 MVC 的精彩演讲。

http://developer.apple.com/videos/wwdc/2010/

这是 session 116 - iPhone OS 的模型- View - Controller

这次 session 充满了关于 MVC 的真正工作原理、它的成功之处以及它的优点的实用建议。但它也有很多介绍性内容,可以帮助刚接触这个概念的人理解它。

如果我理解你上面关于 Java 的 Swing 类的句子,你是在谈论响应事件的匿名类吗?如果是这样的话,那些不是“MVC”,它们就是所谓的“观察者”,当他们从 View 中观察到一个事件时,他们会采取一些行动(通常向 Controller 发送消息)。 Cocoa Touch 使用 Target/Action 范式(和委托(delegate))来实现这一点。

我还强烈建议您采纳 Matthew 和 Stephen 的建议并编写大量代码。如果您不建立这种直觉基础,就很难提出正确的问题(这是获得良好答案所需的大部分内容)。

我真的认为 WWDC 2010 演讲会有所帮助。

祝你好运!

关于model-view-controller - iOS布局;我不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4680995/

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