iOS:使用MVC实现UITableView

iOS:使用MVC实现UITableView,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我找不到一个能很好地解释如何使用MVC模式在我的项目中包括UITableView的例子。 假设开始时,我只有两个文件“MainViewController”(:UIViewController)和“MainModel”(:NSObject),其中包含单元格数据数组 我应该在其中引用UITableView对象,哪个文件应该是表的委托 您的MainViewController将有一个view属性,您应该指向您的UITableView实例。您可以将任何对象作为代理,但通常代理是控制它的视图控制器,即M

我找不到一个能很好地解释如何使用MVC模式在我的项目中包括UITableView的例子。 假设开始时,我只有两个文件“MainViewController”(:UIViewController)和“MainModel”(:NSObject),其中包含单元格数据数组


我应该在其中引用UITableView对象,哪个文件应该是表的委托

您的
MainViewController
将有一个
view
属性,您应该指向您的
UITableView
实例。您可以将任何对象作为代理,但通常代理是控制它的视图控制器,即
MainViewController


也就是说,
UIViewController
有一个子类叫做
UITableViewController
,您可能应该将它用作
MainViewController
的超类。它具有一些自动控制UITableView的功能。事实上,实例化一个
UITableViewController
(或其任何子类)将自动创建一个UITableView,并在其
视图
表视图
属性中指向它。

因此您的主模型就是模型。MainViewController是您的控制器。tableView就是您的视图。将其作为属性添加到MainViewController,并将MainViewController设置为tableView的数据源和委托。然后,在填充tableView时,使用MainModel中的数据。例如:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[MainModel sharedInstance] myArray].count;
}

或者在MainViewController上创建一个NSArray属性,并在ViewDiLoad或ViewWillDisplay中从MainModel填充它。

首先尝试UITableViewController不幸的是,我想了解如何将代码划分为模型视图和控制器,而不将UITableViewController子类化:)UITableView-View,只知道如何绘制自身,UIViewController(或UITableViewController作为的子类)-controller,知道需要在何处显示(或刷新)由其自己的视图管理的数据以及有关用户操作的信息,Model-some类(类机制),对绘图和获取一无所知,但让我们了解它自己的状态(对象状态)更改感兴趣的订阅者。那么,为什么不想将UITableViewController子类化呢?