这是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])

10-08 05:35