关于iOS中层次结构视图设计的问题

时间:2011-05-06 14:13:16

标签: ios ipad

如果我在我的窗口中显示了一个视图层次结构(让我们说一个网格,每个网格单元都是带有Image +标题的UIView),我应该如何实现它而不破坏MVC设计模式?

我应该为每个单元创建一个MVC,然后如何将它们添加到主MCV并将其与主视图相关联?

或者我应该创建一个单元格View并使用addSubView方法将其添加到主视图?

由于

PS。我找到了这个例子,这是对的吗?我是否需要创建一个控制器,然后将其视图添加到mainView并释放控制器?

SimpleViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[mainView addSubview:viewController.view];
[viewController release];

1 个答案:

答案 0 :(得分:1)

http://developer.apple.com/library/ios/#documentation/general/conceptual/DevPedia-CocoaCore/MVC.html

  

模型对象封装特定于应用程序的数据,并定义操作和处理该数据的逻辑和计算......

     

视图对象是应用程序中的一个对象,用户可以看到...

     

控制器对象充当应用程序的一个或多个视图对象与其一个或多个模型对象之间的中介。因此,控制器对象是视图对象通过其获知模型对象的变化的管道,反之亦然。控制器对象还可以为应用程序执行设置和协调任务,并管理其他对象的生命周期......

如果你只想显示一些内容,那么你需要的只是视图,如果没有什么可以建模的话就不需要模型或控制器,也不需要让控制器来管理这些视图。

即使这些视图是从某些模型构建的,也不需要为每个视图提供自己的控制器对象。相反,你可能有一个带有“datasource”委托的网格视图,它可以要求显示单元格,就像UITableView一样。

您的网格单元代表什么?让模型对象捕获与该数据无关的视图行为和状态是否有意义?


  

PS。我找到了这个例子,这是对的吗?我是否需要创建一个控制器,然后将其视图添加到mainView并释放控制器?

不要这样做,这是对UIViewController的滥用,并可能导致混淆。如果您只想要一个视图对象,那么只需创建一个视图对象。您可以从笔尖加载对象,而无需创建额外的控制器对象。查看NSBundle或UINib,了解从nib文件加载对象的其他方法。