我对视图和视图控制器的职责感到困惑。
我已经阅读了关于 MVC 的 Apple 文档,但它没有说明任何回答我的问题的明确示例。
我有一个简单的数据库应用程序,它从数据库中提取数据并使用 UITableView 显示它。
我的视图是自定义视图。它基本上是在 UIView 中彼此相邻显示的 UITableView 的集合,显示从数据库计算的数据。
我的视图控制器为每个 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;
}
我觉得我的设计有些可疑。
- View Controller 是否需要了解我的整个视图 Hierarchy 。最初我认为我的 ContainerView 会抽象一切。
- (其职责是处理用户事件)tableviews 的委托应该由 containerView 或我的 viewcontroller 实现。
- 如果我的视图处理事件,那么我的 UIViews 需要引用我的数据模型,这违反了 MVC 架构的概念。
- 我的容器视图持有列表数组来提供它的表格视图是错误的还是我应该将该逻辑移动到视图控制器?