【发布时间】:2020-02-25 00:50:09
【问题描述】:
应用应该做什么:
1) 用户在 textField 中输入一个单词并点击相应的按钮
2) 应用程序应该转到另一个包含两个标签的场景。一个应该显示用户输入的单词,另一个标识被点击的按钮。这些数据应该通过接收 ViewController 上的属性传递。
实际作用:
1) segue 立即被调用,显然绕过了prepare(segue: sender:)
2) 两个标签都是空白的
3) 断点和print() 表示永远不会调用prepare(segue: sender:)
我检查过/尝试过的内容:
1) 根据我的print() 声明,按钮在情节提要中具有正确的标签
2) 我已将 if else 替换为 switch
3) 我很确定我已经阅读了关于 SO 的所有相关问题和答案
4) 将 prepare(segue: sender:) 中的 sender 从 Any? 切换到 UIButton 并再次返回
代码
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var tf2: UITextField!
@IBOutlet weak var tf3: UITextField!
@IBOutlet weak var tf4: UITextField!
@IBAction func sendButton(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
@IBAction func button2(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
@IBAction func button3(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
@IBAction func button4(_ sender: UIButton) {
print("sender.tag is \(sender.tag)")
self.performSegue(withIdentifier: "mySegue", sender: sender)
print("sender.tag is \(sender.tag)")
}
func prepare(for segue: UIStoryboardSegue, sender: UIButton) {
print("Inside prepare for segue")
print("sender.tag is \(sender.tag)")
if segue.identifier == "mySegue" {
let vc = segue.destination as! SecondViewController
print("sender.tag is \(sender.tag)")
switch sender.tag {
case 101:
if (textField.text?.count)! >= 1 {
vc.staticText = "Button 101"
vc.textProp = self.textField.text!
print("sender.tag is \(sender.tag)")
}
case 102:
if (tf2.text?.count)! >= 1 {
vc.staticText = "Button 102"
vc.textProp = self.tf2.text!
print("sender.tag is \(sender.tag)")
}
case 103:
if (tf3.text?.count)! >= 1 {
vc.staticText = "Button 103"
vc.textProp = self.tf3.text!
print("sender.tag is \(sender.tag)")
}
case 104:
if (tf4.text?.count)! >= 1 {
vc.staticText = "Button 104"
vc.textProp = self.tf4.text!
print("sender.tag is \(sender.tag)")
}
default:
print("Something went wrong")
}
// print("In FirstVC, vc.textProp = \(vc.textProp)")
}else{
print("No text in textField...")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我承认我很擅长忽略显而易见的事情,但我确实花了很多时间才打扰你们。任何帮助或指导将不胜感激......
谢谢!
【问题讨论】:
-
只为标题投票。
-
我不得不尝试想出一些不同的东西。有很多关于类似问题的问题...... :)
标签: ios swift properties switch-statement uistoryboardsegue