使用UITextField在tableview的末尾添加行

时间:2019-05-02 14:53:05

标签: ios swift uitableview uialertcontroller

我有一个包含2个部分的UITableView,在第一个部分中,每个单元格代表一个数组中的不同项,第二个单元格中调用一个带有文本字段的UIAlertController。我想将我在文本字段中编写的任何内容显示在tableView的第一部分中。我的代码当前为:

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

    switch indexPath.section {
    case 0:
        tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark

        UserDefaults.standard.set(selectedCaseSolutionsForCell[indexPath.row], forKey: "ollShowAlg\(selectedCaseID)")
        print("OLL Case with ID \(selectedCaseID) had its main algorithm changed to \(selectedCaseSolutionsForCell[indexPath.row])")
        let newMainSolve : String = UserDefaults.standard.string(forKey: "ollShowAlg\(selectedCaseID)")!
        print("THE ALGORITHM IS NOW \(newMainSolve)")


    case 1:
        tableView.cellForRow(at: indexPath)?.accessoryType = .none
        let alert = UIAlertController(title: "Add New Algoritm", message: "", preferredStyle: .alert)
        alert.addTextField()
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (_) in
            let textField = alert?.textFields![0] // Force unwrapping because we know it exists.
            print("Text field: \(textField!.text!)")

        }))
        present(alert, animated: true)

    default:
        return
    }      
}

如何将文本字段输入添加到数组,然后在UITableView的末尾显示它?这个问题不是重复的,因为我没有使用自定义单元,也没有IBOutlet或IBAction。

1 个答案:

答案 0 :(得分:0)

我将假定表的数据源是一个名为data的字符串数组。像这样:

fileprivate var data: [String] = []

然后在此行print("Text field: \(textField!.text!)")之后要做的就是添加以下内容:

self.table.beginUpdates()
self.data.append(textField!.text!)
self.table.insertRows(at: [IndexPath(item: self.data.count - 1, section: 0)], with: .bottom)
self.table.endUpdates()