从前一个视图控制器返回时,Textfield值设置为空

时间:2017-05-29 06:09:09

标签: ios swift swift3 navigation uitextfield

访问此[图片]:https://media.giphy.com/media/13jWe2R65tiDrW/giphy.gif

Storyboard using segues Storyboard Screenshot

ViewController文件

导入UIKit

类ViewController:UIViewController,UITextFieldDelegate {

@IBOutlet var trainNumberTextField : UITextField!
@IBOutlet var train2 : UITextField!

var stringVal : String!
var stringVal2 : String!

override func viewDidLoad() {
    super.viewDidLoad()
    trainNumberTextField.delegate = self
    train2.delegate = self
    trainNumberTextField.tag = 1
    trainNumberTextField.text = stringVal
    train2.text = stringVal2
    train2.tag = 2


}

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

    if textField.tag == 1 {
    performSegue(withIdentifier: "text2table", sender: self)
    }
    if textField.tag == 2 {
        performSegue(withIdentifier: "text2table2", sender: self)
    }

    return false
}

}

第二个视图控制器:

覆盖func tableView(_ tableView:UITableView,didSelectRowAt indexPath:IndexPath){

    let indexpath = tableView.indexPathForSelectedRow

    let currentcell = tableView.cellForRow(at: indexpath!)!

    print(currentcell.textLabel!.text!)

    textOneValue = currentcell.textLabel!.text!
    let index = textOneValue.index(textOneValue.startIndex, offsetBy: 5)
     finalString =  textOneValue.substring(to: index)


    performSegue(withIdentifier: "table2text", sender: self)

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "table2text"{

    // =========== Destination view contorller name ===========
    let   viewcontorller = segue.destination as! ViewController

    viewcontorller.stringVal = finalString


    }
  

输入一个文本字段值,自动清除以前输入的文本字段值

1 个答案:

答案 0 :(得分:0)

  • 当你回到原点viewController时,最好用“popViewController”方法替换“push”Segue。
  • 使用数据一致性策略也很好。
  • 原因是: 您应该考虑viewController的生命周期。 当你回到原始viewController时,使用“push”Segue使得原始viewController的“viewDidLoad”方法再次被调用。 然后将未选择的文本字段的值(stringVal2)重置为nil。 所以没有保存。