【发布时间】:2019-12-26 23:34:13
【问题描述】:
我有一个带有 2 个按钮的屏幕,A 和 B。当您按下按钮时,它们会转到相同的视图,并带有一个按钮 C。当按下 C 取决于
如果您按A 或B,它们会转到不同的视图。
我有这样的事情,但我有两个问题。首先,它不起作用,即使我将Button A 硬编码为mealTableViewController.from。其次,我不知道如何通过女巫按钮被按下到mealTableViewController.from。
class HomeViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let mealTableViewController = segue.destination as? MealTableViewController else {
return
}
mealTableViewController.from = "Button A"
}
}
在附加到HomeViewController 的情节提要中有两个带有Show segue to Meal Table View Controller 的按钮
然后,我有MealTableViewController,有一个按钮连接到动作boton,根据from 的值,它会转换到一个屏幕或另一个屏幕。
class MealTableViewController: UITableViewController {
var from: String?
@IBAction func boton(_ sender: UIButton) {
if from == "Button A" {
performSegue(withIdentifier: "ShowMealView", sender: self)
} else {
performSegue(withIdentifier: "ShowOther", sender: self)
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
【问题讨论】:
-
Segues 有标识符。在 Attributes Inspector 中,将
"buttonA"分配给按钮 A 的 segue,并将"buttonB"分配给按钮 B。用if segue.identifier == "buttonA" { mealTableViewController.from = "Button A" } else if segue.identifier == "buttonB" { mealTableViewController.from = "Button B" }检查prepare(for:sender:)中的标识符 -
您能解释一下您是如何将 HomeViewController 连接到情节提要中的 MealTableViewController 的吗?例如,您是否从按钮 A/B 按住 ctrl+拖动到 MealTableViewController?
-
Passing Data between View Controllers in Swift 和大量其他问题的可能重复