Текстовое поле постоянно находится во втором контроллере представления после перехода - PullRequest
0 голосов
/ 01 ноября 2018

Я работал над приложением, которое позволяет нескольким текстовым полям из первого контроллера представления переходить во второй контроллер представления при нажатии кнопки. Тем не менее, текстовые поля постоянно находятся во втором контроллере представления, когда я хочу, чтобы они были только при нажатии кнопки. Вот код для первого контроллера взгляда! Любая помощь с благодарностью.

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

Изображение раскадровки

1 Ответ

0 голосов
/ 01 ноября 2018

Это происходит потому, что подготовка к segue будет вызываться каждый раз, когда вы выполняете какое-либо действие segue.

У вас должна получиться переменная bool, которая поможет вам отслеживать, нажата ли какая-либо кнопка или нет, если переход выполняется нажатием кнопки, тогда только вам придется задавать текст при подготовке к переходу.

вот ваш обновленный 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!
    }
}
}

Попробуйте и поделитесь своими результатами.

...