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

Ios 从上一个视图控制器返回时,Textfield值设置为空,ios,swift,swift3,navigation,uitextfield,Ios,Swift,Swift3,Navigation,Uitextfield,访问此[图像]: 视图控制器文件 导入UIKit 类ViewController:UIViewController、UIExtFieldDelegate{ @IBOutlet var trainNumberTextField : UITextField! @IBOutlet var train2 : UITextField! var stringVal : String! var stringVal2 : String! override func viewDidLoad() {

访问此[图像]:

视图控制器文件

导入UIKit

类ViewController:UIViewController、UIExtFieldDelegate{

@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){

输入一个textfield值会自动清除先前输入的textfield值

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

我建议通过描述您面临的问题来提出一个明确的问题。添加图像应该是为了清晰,而不是为了提出整个问题。此外,您应该为特定的代码添加一个代码片段,我作为一名观众不必下载整个项目就可以获得它……我是stackvoerflow的新手。谢谢您的建议。P请观看此图像链接:。缺少Textfield值。我正在使用带有标识符的序列图像板从一个vc移动到另一个vc。在我的应用程序中,我需要输入往返列车名称。当用户点击firstTextField时,将出现一个表视图,用户点击选定单元格,选定单元格值作为firstTextfieldValue和相同的f或secondTextField。问题是,输入second-first值时丢失。感谢您提供的信息,我是iOS新手,请告诉我如何使用PopViewController。?我没有使用导航控制器。在选择表格单元格后,我需要在pervious ViewController textfield上显示值。最好您提出新问题。这样更多的人会看到它我有机会回应。
    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


    }