gpt4 book ai didi

iOS - MVP 设计中的 UITableView 委托(delegate)和数据源

转载 作者:行者123 更新时间:2023-11-29 13:56:12 25 4
gpt4 key购买 nike

我正在尝试使用 Model-View-Presenter 实现 UITableViewController。由于我是这个概念的新手,所以我对如何将 UITableView 的 数据源协议(protocol)与 UIViewController 分开感到非常困惑。

很多文章都赞同View+Viewcontroller需要哑巴,只考虑UI和它们的布局。另一方面,Presenter 需要成为 View 和模型之间的促进者并实现逻辑,但他们声明不包括 UIKit,因为它不直接操作 UI。这就是我的困惑所在。

我们在实现UITableView的时候,要实现两个协议(protocol):UITableViewDelegateUITableViewDataSource,尤其是数据源。

我假设 delegate 属于 View 部分,并在收到用户操作时将事件传递给 Presenter。

但是,要实现 UITableViewDataSource,我们必须有一些 TableView 使用的模型。话虽如此,我只能想到两种方式以某种方式适应 MVP。

  1. 将Model值从Presenter传给UITableView,为了数据源(比如为特定索引创建一行),让它在 View 中只读有值(value)。但后来我认为它违反了 MVP 概念,因为 Model 值是由 View 直接访问的。

  2. 让演示者成为数据源。但是由于 Presenter 不应该导入 UIKit,我认为导入 UIKit 和实现 UITableViewDatasource 也违反了 MVP 概念。

长话短说,我很困惑在哪里以及如何适本地实现 UITableDatasource ...如果有人很了解这个概念,请分享您的知识。提前致谢!

最佳答案

第一个选项是使用适配器 模式 和 MVP。您可以在适配器类中使用 UITableViewDelegateUITableViewDataSource。通过这种方式,您可以将 tableView 逻辑与 ViewController 分开,Presenter 仍然不会包含 UIKit。

关于iOS - MVP 设计中的 UITableView 委托(delegate)和数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55882273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com