在哪里放置在视图控制器之间传递数据的函数
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)
}
谢谢,
两个选项跳进了我的脑海:
在将要呈现的视图控制器中添加一个属性,类似于"titleText"。然后,当您创建该视图控制器时,设置该值 属性 并使用 viewDidLoad 将 titleText 分配给您正在转换的视图控制器的标题。
创建协议并在该类型的新视图控制器上添加委托 属性。在第一个视图控制器中,将创建者指定为委托。然后在 viewDidLoad(或任何地方)中,新的视图控制器可以向委托人(本例中的演示者)询问它需要的任何信息(即标题)。
您的 prepareForSegue
方法实际上并没有为 segue 做准备。它只是创建一个 VC 并显示它。所以它真的应该被称为 presentChangeCityVC
或类似的东西。
至于在哪里调用方法,只要你想展示你的VC就调用它!假设您有一个显示 "Change City" 的按钮。您可以在按钮的目标中调用该方法:
func changeCityButtonPressed() {
presentChangeCityVC()
}
我不知道标题怎么具体,我会在这里解释我需要什么。
我的问题:
这是一个天气应用程序,我允许用户更改他们想要查看天气的城市。问题是我以编程方式创建了视图控制器。这意味着 prepareForSegue 覆盖功能不适用。
现在我确实找到了要做什么而不是 prepareForSegue 的答案(下面是代码),但是,我应该在哪里调用该函数,因为它不是覆盖。
代码:
func prepareForSegue() {
let changeCityVC = ChangeCityViewController()
changeCityVC.delegate = self
present(changeCityVC, animated: true, completion: nil)
}
谢谢,
两个选项跳进了我的脑海:
在将要呈现的视图控制器中添加一个属性,类似于"titleText"。然后,当您创建该视图控制器时,设置该值 属性 并使用 viewDidLoad 将 titleText 分配给您正在转换的视图控制器的标题。
创建协议并在该类型的新视图控制器上添加委托 属性。在第一个视图控制器中,将创建者指定为委托。然后在 viewDidLoad(或任何地方)中,新的视图控制器可以向委托人(本例中的演示者)询问它需要的任何信息(即标题)。
您的 prepareForSegue
方法实际上并没有为 segue 做准备。它只是创建一个 VC 并显示它。所以它真的应该被称为 presentChangeCityVC
或类似的东西。
至于在哪里调用方法,只要你想展示你的VC就调用它!假设您有一个显示 "Change City" 的按钮。您可以在按钮的目标中调用该方法:
func changeCityButtonPressed() {
presentChangeCityVC()
}