在哪里放置在视图控制器之间传递数据的函数

Where to place the function that passed data between view controllers

我不知道标题怎么具体,我会在这里解释我需要什么。

我的问题:

这是一个天气应用程序,我允许用户更改他们想要查看天气的城市。问题是我以编程方式创建了视图控制器。这意味着 prepareForSegue 覆盖功能不适用。

现在我确实找到了要做什么而不是 prepareForSegue 的答案(下面是代码),但是,我应该在哪里调用该函数,因为它不是覆盖。

代码:

func prepareForSegue() {
     let changeCityVC = ChangeCityViewController()
     changeCityVC.delegate = self
     present(changeCityVC, animated: true, completion: nil)
}

谢谢,

两个选项跳进了我的脑海:

  1. 在将要呈现的视图控制器中添加一个属性,类似于"titleText"。然后,当您创建该视图控制器时,设置该值 属性 并使用 viewDidLoad 将 titleText 分配给您正在转换的视图控制器的标题。

  2. 创建协议并在该类型的新视图控制器上添加委托 属性。在第一个视图控制器中,将创建者指定为委托。然后在 viewDidLoad(或任何地方)中,新的视图控制器可以向委托人(本例中的演示者)询问它需要的任何信息(即标题)。

您的 prepareForSegue 方法实际上并没有为 segue 做准备。它只是创建一个 VC 并显示它。所以它真的应该被称为 presentChangeCityVC 或类似的东西。

至于在哪里调用方法,只要你想展示你的VC就调用它!假设您有一个显示 "Change City" 的按钮。您可以在按钮的目标中调用该方法:

 func changeCityButtonPressed() {
    presentChangeCityVC()
}