这是2个视图控制器:主视图和详细视图。在我实施MVP模式时,他们两个都有一个主持人。
我需要在详细视图控制器中更新数据。
我在主视图控制器中使用此代码。
detailVC.presenter?.set(data: presenter?.data[row])
我正在从主视图控制器的演示者那里获取数据,并将其传递给detailVC的演示者。
这个设计好吗?
最佳答案
如果您之前创建过DetailVC,则可以这样使用。您也可以使用委托模式。 MasterVC必须具有DetailVC的委托。每当需要设置数据时,都可以在MasterVC类中使用proxy.set(data:presenter?.data [row])。但是不要忘记设置MasterVC委托。
但是,如果您要创建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
let detailVC = DetailVC.initDetailVC(data: presenter.data[row])