iphone - UITableViewDelegate 和 DataSource 在 MVC 中放在哪里?

标签 iphone objective-c cocoa-touch

就 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/

相关文章:

iphone - 当标签中的文本被限制为适合宽度时,如何计算 UIFont 的大小?

ios - Textfield 的文本必须看起来有点正确

iphone - NSPersistentStoreCoordinator 线程安全吗?

objective-c - clipToBounds 和 masksToBounds 性能问题

iphone - 我在 iOS 的 Xcode 中收到 "Implicit conversion from enumeration type"警告,我不知道为什么

iphone - Xcode 项目中的链接器命令失败并出现退出代码 1 错误

ios - 如何为此 UIBarButtonItemStyle 创建自定义设计?

iphone - 无法解释的“强烈捕获 self ”警告

在 iOS 自定义键盘中使用时不支持 iOS CoreBluetooth 状态

iphone - News Rotator for Mobile(例如适用于 Iphone 和 Ipad 的 Yahoo.com 移动版)?