PreparetoSegue 按钮命令到另一个 ViewController Swift
PreparetoSegue Button Command to Another ViewController Swift
如何准备将按钮命令转至另一个 ViewController?我的 calculateButton 似乎给我一个错误代码。
主要ViewController
if (segue.identifier == "toCalculate") {
let destViewController : CalcualteViewController = segue.destinationViewController as CalcualteViewController
destViewController.calculateButton(sender: UIButton) {
let dataone = data1.text.toInt() ?? 0
let datatwo = data2.text.toInt() ?? 0
let answercalculation = dataone * datatwo
answer.text = "\(answercalculation)" + " psi"
}
计算ViewController
class CalcualteViewController: UIViewController {
@IBOutlet weak var textlabel: UILabel!
@IBOutlet var answer: UITextField!
@IBOutlet var data1: UITextField!
@IBOutlet var data2: UITextField!
@IBAction func calculateButton(sender: AnyObject) {
}
destViewController.calculateButton
是CalculateViewController的一个方法。当它不接受任何参数 accept sender: AnyObject
时,你有一个闭包挂在它的末尾。将您的逻辑移动到 CalculateViewController
.
@IBAction func calculateButton(sender: AnyObject) {
let dataone = data1.text.toInt() ?? 0
let datatwo = data2.text.toInt() ?? 0
let answercalculation = dataone * datatwo
answer.text = "\(answercalculation)" + " psi"
}
如果您想在多个控制器之间共享代码,您可以创建一个名为 var calculateButtonAction: ((UIButton) -> ())?
的实例变量,然后将其设置为 prepareForSegue
:
destinationViewController.calculateButtonAction = { (sender) in
let dataone = destinationViewController.data1.text.toInt() ?? 0
let datatwo = destinationViewController.data2.text.toInt() ?? 0
let answercalculation = dataone * datatwo
destinationViewController.answer.text = "\(answercalculation)" + " psi"
}
然后从 CalculatorViewController 调用它:
@IBAction func calculateButton(sender: AnyObject) {
if let action = calculateButtonAction {
action(sender)
}
}
更好的是,创建一个 BaseCalculatorViewController 并将其子类化为您的控制器,这样您就可以让您的子类继承 calculateButton
。
如何准备将按钮命令转至另一个 ViewController?我的 calculateButton 似乎给我一个错误代码。
主要ViewController
if (segue.identifier == "toCalculate") {
let destViewController : CalcualteViewController = segue.destinationViewController as CalcualteViewController
destViewController.calculateButton(sender: UIButton) {
let dataone = data1.text.toInt() ?? 0
let datatwo = data2.text.toInt() ?? 0
let answercalculation = dataone * datatwo
answer.text = "\(answercalculation)" + " psi"
}
计算ViewController
class CalcualteViewController: UIViewController {
@IBOutlet weak var textlabel: UILabel!
@IBOutlet var answer: UITextField!
@IBOutlet var data1: UITextField!
@IBOutlet var data2: UITextField!
@IBAction func calculateButton(sender: AnyObject) {
}
destViewController.calculateButton
是CalculateViewController的一个方法。当它不接受任何参数 accept sender: AnyObject
时,你有一个闭包挂在它的末尾。将您的逻辑移动到 CalculateViewController
.
@IBAction func calculateButton(sender: AnyObject) {
let dataone = data1.text.toInt() ?? 0
let datatwo = data2.text.toInt() ?? 0
let answercalculation = dataone * datatwo
answer.text = "\(answercalculation)" + " psi"
}
如果您想在多个控制器之间共享代码,您可以创建一个名为 var calculateButtonAction: ((UIButton) -> ())?
的实例变量,然后将其设置为 prepareForSegue
:
destinationViewController.calculateButtonAction = { (sender) in
let dataone = destinationViewController.data1.text.toInt() ?? 0
let datatwo = destinationViewController.data2.text.toInt() ?? 0
let answercalculation = dataone * datatwo
destinationViewController.answer.text = "\(answercalculation)" + " psi"
}
然后从 CalculatorViewController 调用它:
@IBAction func calculateButton(sender: AnyObject) {
if let action = calculateButtonAction {
action(sender)
}
}
更好的是,创建一个 BaseCalculatorViewController 并将其子类化为您的控制器,这样您就可以让您的子类继承 calculateButton
。