iOS*_*Guy 9 model-view-controller design-patterns objective-c uiviewcontroller ios
我对模型 - 视图 - 控制器设计模式有疑问.我理解该模型包含数据.我也了解Controller(View Controllers)实现app的逻辑.例如,如果UIPicker轮选择第4行,则视图控制器可以向模型询问存储在模型阵列中的第4个对象.我很难理解"视图"是否合适.我认为该笔尖/故事板文件将被归类为"视图".但是,每个视图都需要连接一个View Controller,将所有插座连接到视图.我怎么想保持View和View Controller分开?我应该将所有插座连接到"View Class",然后在我的View Controller中引用我的"View"类来实现这些插座的逻辑吗?也许我只需要一个View和View Controller处理不同任务的例子.因为否则额外的"视图"类似乎没有意义.MVC的视图是指View类吗?我希望如何或为什么要将此View类与View Controller类分开?
rma*_*ddy 14
视图的工作是显示数据和报告事件.
控制器的工作是协调视图和模型之间的通信.
数据的工作是存储数据,也提供围绕该数据的业务逻辑.
您询问:
我很难理解"视图"是否合适.
在您的示例中,UIPickerView是视图.
在iOS/OSX中,视图控制器只是MVC的控制器.事实上,视图控制器还包含一个空视图容器,您可以将所有其他视图添加到其中.但iOS/OSX中仍然存在明显的MVC分离.
所有的类等UIButton,UIPickerView,UITableView等代表图.视图控制器的工作是为这些视图提供来自数据模型的数据,以及响应来自这些视图的事件,使您有机会更新其他视图和数据模型.
你还说:
但是,每个视图都需要连接一个View Controller,将所有插座连接到视图.我怎么想保持View和View Controller分开?
它们是分开的.如果添加a UITableView,则为单独视图.您将它连接到一个类,以便该类可以实现数据源和委托方法.该类是控制器类.这个控制器类通常是一个视图控制器,但它不一定是.您可以编写独立于任何特定视图控制器(或通用控制器)的各种自定义视图类.但最终该视图类需要连接到[view]控制器类,以便可以正确处理数据和事件.
您询问:
我希望如何或为什么要将此View类与View Controller类分开?
看看UITableViewController.这是分离的一个明显例子,但它是以一个相当整洁的包装提供的.你实际上有一个单独的UITableView类,它是视图.此视图负责呈现视图和收集用户交互.它是实际的表视图控制器,它为视图提供数据并从视图中处理用户事件.
您可以UITableView向任何视图添加视图.这是一个完全可重用的视图组件.连接到表视图的每个控制器都可以提供任何适当的数据并正确处理用户交互.
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |