Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在objective-C中开发而不使用Interface Builder时的MVC_Iphone_Objective C_Cocoa_Model View Controller_Design Patterns - Fatal编程技术网

Iphone 在objective-C中开发而不使用Interface Builder时的MVC

Iphone 在objective-C中开发而不使用Interface Builder时的MVC,iphone,objective-c,cocoa,model-view-controller,design-patterns,Iphone,Objective C,Cocoa,Model View Controller,Design Patterns,当视图不是用Interface Builder创建时,在Objective-C(Cocoa/iPhone)中实现真正的MVC的正确方法是什么 当我在项目中不使用Interface Builder时,如何最好地构造代码并将MVC模式的不同组件连接在一起?通常您会创建要显示的元素的子类。例如,在init方法中设置的UITableView。通过这种方式,您的ViewController只是将它的一个实例出列通常,当您试图在没有nib文件帮助的情况下创建视图时,您必须实现该视图的controller的l

当视图不是用Interface Builder创建时,在Objective-C(Cocoa/iPhone)中实现真正的MVC的正确方法是什么


当我在项目中不使用Interface Builder时,如何最好地构造代码并将MVC模式的不同组件连接在一起?

通常您会创建要显示的元素的子类。例如,在init方法中设置的UITableView。通过这种方式,您的ViewController只是将它的一个实例出列

通常,当您试图在没有nib文件帮助的情况下创建视图时,您必须实现该视图的controller的loadView方法


所以我的答案是,任何与V相关的东西都会转到控制器实现中的loadView方法,与C相关的任何其他逻辑内容都将进入控制器实现的其余部分。

这实际上是一个品味问题:有些人绝对认为,对于一个viewController,可以有一个且只有一个视图,因此唯一的方式是为每个视图将UIView子类化。我完全同意viewController管理构成屏幕的多个子视图,我只在重用性方面有意义的地方将UIView子类化。事实上,我也同意一个viewController使用多个viewController来管理视图的不同独立部分,例如UINavigationController。

谢谢您的回答。如果我想将视图进一步分离到一个单独的类中,而不是在一个方法中创建所有UI组件,您会建议在从UIView派生的单独类中这样做吗?@Emmanuel:我理解您对尽可能保持分离模块的关注。然而,一般来说,如果我们决定以编程方式构造UIView的子类,我们通常在控制它的控制器中进行。它确实在一定程度上降低了代码的可重用性。但它使以下接线插座工作更省时,更易于维护。