Ios 塞格街的噩梦

Ios 塞格街的噩梦,ios,swift,properties,switch-statement,uistoryboardsegue,Ios,Swift,Properties,Switch Statement,Uistoryboardsegue,应用程序应该做什么: 1) 用户在文本字段中键入一个单词,然后点击相应的按钮 2) 应用程序应切换到包含两个标签的另一个场景。一个应显示用户键入的单词,另一个应标识所点击的按钮。这些数据应该通过接收ViewController上的属性传递 它的实际功能: 1) segue立即被调用,显然绕过了prepare(segue:sender:) 2) 两个标签都是空白的 3) 断点和print()表示从未调用prepare(segue:sender:) 我检查/尝试的内容: 1) 根据我的print()

应用程序应该做什么:

1) 用户在文本字段中键入一个单词,然后点击相应的按钮

2) 应用程序应切换到包含两个标签的另一个场景。一个应显示用户键入的单词,另一个应标识所点击的按钮。这些数据应该通过接收ViewController上的属性传递

它的实际功能:

1) segue立即被调用,显然绕过了
prepare(segue:sender:)

2) 两个标签都是空白的

3) 断点和
print()
表示从未调用
prepare(segue:sender:)

我检查/尝试的内容:

1) 根据我的
print()
语句,按钮在情节提要中具有正确的标记

2) 我已经用
if-else
替换了
switch

3) 我很确定我已经阅读了所有相关的问题和答案

4) 在
prepare(segue:sender:)
中将
sender
Any?
切换到
ui按钮,然后再次切换

代码

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.
    }


}
我承认我很擅长忽视显而易见的东西,但在打扰你们之前我确实花了很多时间。任何帮助或指导都将不胜感激

谢谢

prepare(for segue
未被调用,因为签名错误。您不能更改
发送方
参数的类型

例如,在一个额外的行中将
sender
强制转换为期望的类型

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "mySegue",
       let button = sender as? UIButton {
       ...

并用
按钮

@vadian替换所有后续出现的
发送者
——非常感谢,先生!我看到您的代码和我的代码之间的区别是使用“Any?”与“UIButton”,以及使用“button”代替“sender”。实际上,我已经尝试了第一部分好几次,但仍然使用“sender”我必须反复思考几次才能了解它。再次感谢!仅为标题投票。我必须尝试想出一些不同的东西。关于类似的问题,有很多问题…:)