从前一个视图控制器返回时,文本字段值设置为空 [关闭]

Posted

技术标签:

【中文标题】从前一个视图控制器返回时,文本字段值设置为空 [关闭]【英文标题】:Textfield values set to empty when coming back from previous view controller [closed] 【发布时间】:2017-10-29 08:35:21 【问题描述】:

访问此[图片]: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


    

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

【问题讨论】:

我建议通过描述您面临的问题来提出一个明确的问题。添加图像应该是为了清楚起见,而不是为了问整个问题。另外,您应该为特定代码添加代码sn-p,我作为查看者不必下载整个项目即可获得它... 我是 stackvoerflow 的新手。谢谢你的建议。请观看此图片链接:media.giphy.com/media/13jWe2R65tiDrW/giphy.gif。缺少文本字段值。 我正在使用带有标识符的故事板从一个 vc 移动到另一个 vc。在我的应用程序中,我需要输入往返列车名称。当用户点击 firstTextField 时,将出现一个表格视图,用户点击选定的单元格,选定的单元格值放置为 firstTextfieldValue 和 secondTextField 相同。问题是,当输入第二个第一个值时会丢失。 【参考方案1】: 当你推回原视图控制器时,最好用“popViewController”方法替换使用“push” Segue。 使用数据一致性策略也很好。 以及原因: 您应该考虑 viewController 的生命周期。 当你推回原始 viewController 时,使用“push”Segue 会使原始 viewController 的“viewDidLoad”方法再次被调用。 然后未选择的文本字段的值(stringVal2)被重置为零。 所以没有保存。

【讨论】:

感谢您的信息,我是 ios 新手,请告诉如何 popViewContorller..?我没有使用导航控制器。选择表格单元格后,我需要在 pervious viewcontorller 文本字段上显示值。 最好是问一个新问题。这样更多的人会看到它并有机会做出回应。

以上是关于从前一个视图控制器返回时,文本字段值设置为空 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

滚动表格视图时文本字段为空

文本字段为空时隐藏自动完成表格视图

当我滚动表格视图时,文本字段中的数据设置为 null

快速解析时无法在json post请求参数中添加文本字段输入的文本

如何在文本字段中临时保存文本?

如何将第二个viewcontroller文本字段值传递给第一个viewcontroller数组并在swift4中点击按钮时关闭