【问题标题】:How to get all string values for UITextField in UITableViews如何在 UITableViews 中获取 UITextField 的所有字符串值
【发布时间】:2020-03-15 16:02:00
【问题描述】:

我正在尝试创建一个数组,其中包含插入到表格视图中的文本字段中显示的所有值。我目前正在使用以下代码:

func textFieldDidEndEditing(_ textField: UITextField) {
        editedValues.append(textField.text!)
}

@IBAction 
func saveEditedProfile(_ sender: Any) {
    UserDefaults.standard.set(profileNameTextField.text, forKey: "Name")
    print(editedValues)
    for i in 1...ProfileDataOptions().myProfileValues.count-1{
        UserDefaults.standard.set("\(i)", forKey: ProfileDataOptions().myProfileValues[i])
    }
    navigationController?.popViewController(animated: true)
}

但是,打印函数只返回一个已编辑值的数组,我希望它返回每个文本字段的值,包括未编辑的值。如何创建这个数组?

【问题讨论】:

  • 所以有多个文本字段,如果是,那么您是否还想要其他未编辑的文本字段的值?
  • 两者都同意

标签: ios swift uitableview uitextfield


【解决方案1】:

当用户在 texField 上按 Enter 时,我假设您想要附加的editedValues。使用

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

    editedValues.append(textField.text!)
    return true
}

已编辑

var editedValue = ""
func textFieldDidEndEditing(_ textField: UITextField) {
        editedValue = textField.text!
    }

现在

@IBAction func saveEditedProfile(_ sender: Any) {
        UserDefaults.standard.set(profileNameTextField.text, forKey: "Name")
        editedValues.append(editedValue)
        for i in 1...ProfileDataOptions().myProfileValues.count-1{
            UserDefaults.standard.set("\(i)", forKey: ProfileDataOptions().myProfileValues[i])
        }
        navigationController?.popViewController(animated: true
        )
    }

【讨论】:

  • 我希望在点击按钮时返回值(这就是第二个函数的用途)
  • 这仍然只获取被编辑的文本字段的值
【解决方案2】:

您可以使用以下函数轻松获取表格值

func getTableCellsData() -> [String] {
        //Your Array
        arrData.removeAll()
        for section in 0 ..< self.tblView.numberOfSections {
            for row in 0 ..< self.tblView.numberOfRows(inSection: section) {
                let indexPath = NSIndexPath(row: row, section: section)
                let cell = self.tblView.cellForRow(at: indexPath as IndexPath) as! tblCell
                //You get you cell value
                self.arrData.append(cell.textField.text)
            }
        }
        print(arrData)
        return arrData
    }

【讨论】:

    【解决方案3】:

    如果您在按钮单击时保存文本,那么最简单的方法是在单击时获取值。如果您的行和部分位于第 0 位。您可以根据您的行号或节号进行更改。 例如:-

    @IBAction func saveEditedProfile(_ sender: Any) {
        let index = IndexPath(row: 0, section: 0)
        let cell: XYZTableCell = self.myTableView.cellForRow(at: index) as! XYZTableCell
    
        editedValues.append(cell.profileNameTextField.text ?? "")
        editedValues.append(cell.abcTextfield.text ?? "")
    
        UserDefaults.standard.set(profileNameTextField.text, forKey: "Name")
        editedValues.append(editedValue)
    
        for i in 1...ProfileDataOptions().myProfileValues.count-1
          {
            UserDefaults.standard.set("\(i)", forKey: ProfileDataOptions().myProfileValues[i])
          }
        navigationController?.popViewController(animated: true)
    }
    

    【讨论】:

    • 这不会保存表格视图中的值
    【解决方案4】:

    让 newArray = textField.text?.trim.split(separator: " ")

    您可以使用此数组并替换现有数组,然后重新加载 tableview!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 2015-08-21
      • 2014-04-23
      • 2020-07-07
      • 1970-01-01
      相关资源
      最近更新 更多