我对View和View-controller的职责感到困惑。
我已阅读Apple's Doc on MVC但未说明任何回答我问题的明确示例。
我有一个简单的数据库应用程序,它从数据库中提取数据并使用UITableView显示它。
我的视图是自定义视图。它基本上是一个 UITableView的集合在UIView中彼此相邻显示,显示从数据库计算的数据。
我的视图Controller为每个UITableview实现委托。
我有一个容器视图(UIVIew),其中包含所有UITableview viewController:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
{
UIView *containerForAllview = [tableview superview];
//container view contains list of dataset . each of which is displayed
// by it's own respective tableview
if(tableview = atableview){
array = containerForAllview.getDatafortable(atableview);
}else if(tableview = btableview){
array = containerForAllview.getDatafortable(btableview);
}
/// like this for few more tables
// configure cells using this array
cell.text = [array objectAtIndex:indexpath.row].name;
}
我觉得我的设计很可疑。
答案 0 :(得分:1)
视图控制器应负责管理其下的整个视图层次结构。这些视图只管理事件,因为它们知道事件何时发生以及通知谁。他们很少真正对此做任何事情。他们只是通知他们的事件代表(通常是他们自己的视图控制器)。
通常,只有viewControllers( controllers )直接与您的模型对话,并告诉他们需要知道的内容,并回应视图中有关UI事件的通知。
具体回复:
答案 1 :(得分:1)
修改设计以遵循MVC架构的简单方法是为每个表创建一个单独的数据类。
你可以做一些TableA
有数据源和委托名为TableAData
的事情 - 它是一个完全独立的类。然后你只需要确保TableAData
声明一个协议,以便TableA
可以从TableAData
监听委托方法并相应地修改它的显示!
MVC架构非常简单 - 让另一个类完成数据处理的所有处理。一旦此类处理数据,通知视图控制器,以便它可以更新用户界面!这可以通过代理或通知等方式完成,例如键值观察。