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

时间:2018-09-05 17:43:06

标签: ios swift viewcontroller

我不知道如何具体说明标题,在这里我将解释所需的内容。

我的问题:

这是针对天气应用程序的,我允许用户在其中更改要检查天气的城市。问题是我以编程方式创建了视图控制器。意味着prepareForSegue覆盖功能不适用。

现在,我确实找到了要解决的方法而不是prepareForSegue(贝洛是代码)的答案,但是,由于它不是替代,我应该在哪里调用该函数。

代码:

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

谢谢

2 个答案:

答案 0 :(得分:0)

两个选择跳入我的脑海:

  1. 向要显示的视图控制器添加一个属性,例如“ titleText”。然后,当您创建该视图控制器时,请设置该属性的值,并使用viewDidLoad将titleText分配给您也要过渡的视图控制器的标题。

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

答案 1 :(得分:0)

您的prepareForSegue方法实际上并没有为接缝做准备。它只是创建一个VC并将其呈现。因此,它实际上应该称为presentChangeCityVC或类似的名称。

关于在何处调用该方法,只要要显示VC就可以调用它!假设您有一个显示“ Change City”的按钮。您可以在按钮的目标中调用该方法:

 func changeCityButtonPressed() {
    presentChangeCityVC()
}