Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 为什么要使用ViewController来管理ViewController,而不仅仅是ApplicationLegate_Iphone_Uiviewcontroller_Uiapplicationdelegate - Fatal编程技术网

Iphone 为什么要使用ViewController来管理ViewController,而不仅仅是ApplicationLegate

Iphone 为什么要使用ViewController来管理ViewController,而不仅仅是ApplicationLegate,iphone,uiviewcontroller,uiapplicationdelegate,Iphone,Uiviewcontroller,Uiapplicationdelegate,如果我有一组ViewController只处理一个视图,或者即使我的ViewController要处理多个视图,为什么我要使用另一个ViewController来管理其他ViewController?为什么我不在ApplicationLegate级别更改ViewController呢 也许我对ViewController的想法是错误的?我习惯于使用Ruby/.NET以MVC模式编写代码。例如,如果我使用小部件,我可能会有一个WidgetController和一个列表视图,以及一个WidgetCo

如果我有一组ViewController只处理一个视图,或者即使我的ViewController要处理多个视图,为什么我要使用另一个ViewController来管理其他ViewController?为什么我不在ApplicationLegate级别更改ViewController呢

也许我对ViewController的想法是错误的?我习惯于使用Ruby/.NET以MVC模式编写代码。例如,如果我使用小部件,我可能会有一个WidgetController和一个列表视图,以及一个WidgetController的详细视图

类似的iPhone MVC结构是什么?我假设WidgetController将成为ViewController的子类,并且根据我想要查看小部件数据的方式,我会有两个不同的视图。然后,当我想处理Wodgits时,我会制作一个带有相关视图的WodgitController,并用新的Wodgit ViewController交换窗口的子视图


我不明白有一个RootViewController来控制我的控制器能给我带来什么。价值在哪里?我遗漏了什么?

我将关注一个方面:划分是一个非常有用的设计原则。如果您将关注点分开,并将它们放在“属于”的地方,它们将更容易找到、维护、构建,并用于新的目的

考虑这一点:

你家里所有的管道都通向同一个地方。你是在水槽里小便,还是使用专门为此设计的固定装置

对于您的应用程序,应用程序代理负责响应应用程序事件和管理通用应用程序资源。根视图控制器负责管理视图和视图控制器。作为一个视图控制器,它具有导航控制、显示模式视图、充当委托等特殊功能。虽然您可以创建视图控制器并在应用程序委托中完全操作它,但随着您管理的视图数量的增加,任务将变得越来越难,另一方面,如果您希望成为文本字段委托、数据源等,则很容易将根视图控制器拆分为自己的类。成本很低


厕所离我们一步远,为什么要在水槽里小便?

UIViewController将视图行为与应用程序行为区分开来,就像应用程序如何与操作系统交互一样。我在上面列出了视图控制器可以执行的一些特殊操作。我不使用.net,但我使用RubyonRails。与Rails比较的问题是,Rails中的MVC体系结构主要针对的是一次状态更改和渲染操作(每个请求)而不是运行的应用程序。我想您可以考虑路由、延迟作业和应用程序控制器,就像应用程序委托一样。视图控制器类似于动作控制器,而XIB类似于rails中的erb或haml视图,尽管路由可能也类似于视图控制器IBActions。我想我在脑海中试图将web的MVC映射到iphone的MVC,这让我忙得不可开交。我觉得在AppDelegate中有一个窗口可以获取控制器视图,当视图更改为显示不同的模型时,控制器也应该更改,但窗口或应用程序的工作应该是更改控制器,而不是另一个控制器。我太执着于“控制器”这个词,我认为它应该是什么,而不是它是什么。我想我得处理一下。非常感谢!=)NP顺便说一下,我认为应用程序委托是一个控制器,而不是一个视图控制器。