Ios 从上一个视图控制器返回时,Textfield值设置为空
访问此[图像]: 视图控制器文件 导入UIKit 类ViewController:UIViewController、UIExtFieldDelegate{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() {
@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)重置为零。 所以我没有得救
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
}