就 MVC 而言,我有一个在我的 Controller 中实例化的 UITableView 和一个充当 UITableViewDelegate 和 UITableViewDataSource 的模型对象。当我开始设置委托(delegate)和数据源时,我只是添加了两者以指向模型:
// INSIDE CONTROLLER
[tableView setDelegate:dataModel];
[tableView setDataSource:dataModel];
DataSource 适合模型,感觉不错。但是委托(delegate),是模型中最好的(因此它与数据源一起使用)还是(在 MVC 术语中)更适合 Controller ?
// INSIDE CONTROLLER
[tableView setDelegate:self];
[tableView setDataSource:dataModel];
编辑: 我应该澄清一下,我的模型对象包含一个 NSMutableArray,它保存我希望在 UITableView 中显示的数据(因此我将 DataSource 设置为模型)。这似乎很有效,因为我可以直接从模型填充 UITableView。
最佳答案
通常的做法是让您的 View Controller 成为委托(delegate)和数据源,使其符合 UITableViewDelegate 和 UITableViewDataSource 或使其成为 UITableViewController 的子类(您会注意到,它符合这些协议(protocol)本身)。当然,为您的 Controller 提供实际数据的代码应该保留在您的模型层中。
作为对您的编辑的响应,您的模型类可以将 NSMutableArray 作为属性公开,您的表的 View Controller 可以轻松访问该属性。
关于iphone - UITableViewDelegate 和 DataSource 在 MVC 中放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390268/