【发布时间】:2013-03-16 16:20:39
【问题描述】:
我正在学习 iOS 开发的东西,我在教程和书籍中发现控制器层通常可以直接访问视图的控件(文本字段、标签等)。让我们考虑这样一个例子:
假设 View 有一个名为 lblResult 的标签和一个名为 txtDataToAnalyze 的文本字段。比在控制器界面中我们有这样的东西:
@property (nonatomic, retain) IBOutlet UILabel* lblResult;
@property (nonatomic, retain) IBOutlet UITextField* txtDataToAnalyze;
以及实现文件中的一些@synthesize 语句。
我有一些 JavaSwing 开发经验,其中大多数人认为我是在没有任何 GUI 构建器的情况下手动编写的,而我通常在 MVC 中做的是通过 getter/setter 访问 View 的控件。例如:void setResult(String resString); 或 String getDataToAnalyze();。这样,控制器只知道视图中显示了什么条信息,而不知道如何显示它们。我觉得比较灵活(以后改视图层比较容易)。
我知道 iOS 有一些特定的规则,引入了 XIB/NIB 文件等,所以也许我的怀疑在 iPhone/iPad 开发的情况下完全没有用。但是我打算为 iOS 写一些更严肃的应用程序(实际上是从 Java Swing 中“重写”它),这就是我想问你的原因:
你认为,我应该改变我的思维方式并习惯新的(对我而言)方法(xib 文件,使用拖放创建 GUI 和 为控制器提供有关数据应如何在视图中显示的信息) ??你在入手 iOS 时有过类似的疑惑吗?
【问题讨论】:
-
根据我的经验,更典型的做法是有一个
UIViewController子类,它直接设置标签的文本、获取文本字段的文本值等等。我有点想知道这个问题是否不会在programmers SE 上得到更好的回应。
标签: ios objective-c model-view-controller design-patterns