gpt4 book ai didi

ios - MVP: View Controller 可以向另一个 View Controller 的呈现者发送消息吗?

转载 作者:行者123 更新时间:2023-11-29 05:31:07 24 4
gpt4 key购买 nike

有 2 个 View Controller :主视图和详细 View 。当我实现 MVP 模式时,他们都有一个演示者。

我需要更新详细 View Controller 中的数据。

我在主视图 Controller 中使用此代码。

detailVC.presenter?.set(data: presenter?.data[row])

我从主视图 Controller 的呈现器获取数据并将其传递给detailVC的呈现器。

这样的设计好吗?

最佳答案

如果你之前创建过DetailVC,就可以这样使用。您也可以为此使用委托(delegate)模式。 MasterVC 必须有 DetailVC 的委托(delegate)。每当您需要设置数据时,您都可以在 MasterVC 类中使用 delegate.set(data: Presenter?.data[row]) 。但不要忘记设置 MasterVC delegate。

但是如果你想创建DetailVC并设置参数,你可以使用init方法。为您的detailVC 创建一个具有所需参数的初始化函数,如下所示。将该函数写入您的DetailVC 类,或者为具有不同参数的自定义初始化函数创建一个DetailViewControllerInit 类。

static func initDetailVC(data: DataType?) -> UIViewController { 
let vc = UIStoryboard.... // create DetailVC here..
let presenter = viewController.presenter
presenter.set(data) // or presenter.data = data
return vc
}

之后你可以像这样在MasterVC中创建DetailVC

让detailVC = DetailVC.initDetailVC(data: Presenter.data[row])

关于ios - MVP: View Controller 可以向另一个 View Controller 的呈现者发送消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57557470/

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