进行搜索后,文本字段将永久存在于第二个视图控制器中

时间:2018-11-01 10:08:40

标签: swift segue textfield

我一直在开发一个应用程序,该应用程序允许在按下按钮时将第一个视图控制器中的多个文本字段传递给第二个视图控制器。但是,当我只希望按下按钮时,文本字段将永久存在于第二个视图控制器中。这是第一个视图控制器的代码!任何帮助将不胜感激。

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var textField1: UITextField!

    @IBAction func buttonTwo(_ sender: Any) {
        if textField1.text != "" {
            performSegue(withIdentifier: "segue", sender: self)        
        }
    }

    @IBAction func buttonOne(_ sender: Any) {
        if textField.text != "" {
            performSegue(withIdentifier: "segue", sender: self)
        }
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        var secondController = segue.destination as! SecondViewController
        secondController.myString1 = textField1.text!
        secondController.myString = textField.text!
    }
}

这是第二个视图控制器中的代码:

class SecondViewController: UIViewController {

    @IBOutlet weak var label: UILabel!

    @IBOutlet weak var label1: UILabel!

    var myString = String()
    var myString1 = String()

    override func viewDidLoad() {
        super.viewDidLoad()

        label.text = myString
        label1.text = myString1
        // Do any additional setup after loading the view.    
    }
}

Image of storyboard

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为每次执行一些segue操作时都会调用为segue做准备。

您应该设法拥有一个bool变量,该变量可以帮助您跟踪是否单击了任何按钮,如果通过单击按钮执行了segue,则只有在准备segue时才需要设置文本。

这是您更新的viewController

class ViewController: UIViewController {

@IBOutlet weak var textField: UITextField!
@IBOutlet weak var textField1: UITextField!

var isButtonClicked: Bool = false

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    /*reset isButtonClicked to false, when you back from second viewController */
    isButtonClicked = false
}

@IBAction func buttonTwo(_ sender: Any) {
    if textField1.text != "" {
        isButtonClicked = true
        performSegue(withIdentifier: "segue", sender: self)
    }
}

@IBAction func buttonOne(_ sender: Any) {
    if textField.text != "" {
        isButtonClicked = true
        performSegue(withIdentifier: "segue", sender: self)
    }
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if isButtonClicked {
        var secondController = segue.destination as! SecondViewController
        secondController.myString1 = textField1.text!
        secondController.myString = textField.text!
    }
}
}

尝试并分享您的结果。