在运行应用程序时编辑单元格时更新数组

Posted

技术标签:

【中文标题】在运行应用程序时编辑单元格时更新数组【英文标题】:Update array while editing cell while running the App 【发布时间】:2015-09-19 15:07:37 【问题描述】:

我在 ViewController 中有一个 tableView 和一个名为 toDo 的数组,在 TableView 中我有一个单元格,在单元格中我有 textView。 textView 是可编辑的(用户可以更改 textView 中的文本)。 用户更改文本后 - 我希望单元格将其保存到 toDo 数组,但每当我重新加载数据时,文本就会消失。 这是我尝试过的:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
        let cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! TableViewCell
        cell.textField.text = toDo[indexPath.row]
        cell.textField.delegate = self
        return cell
    

**我有一个测试按钮,只要我点击它就会重新加载数据。

【问题讨论】:

请显示您正在使用修改后的文本更新 toDo 的代码。 代码在问题中:cell.textField.text = toDo[indexPath.row]。除非我没有编写正确的代码.. 这显示了你如何从 toDo 读取信息,但重要的部分是当用户更新文本时你如何写入 toDo 信息。有意义吗? @MirekE 我想我没有写它。你能给我一个例子吗? 【参考方案1】:

试试这个 - 在文本字段上设置标签并实现 textFieldDidEndEditing: 以在重新加载表格视图之前更新您的模型。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell: TableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath:indexPath) as! TableViewCell
    cell.textField.text = toDo[indexPath.row]
    cell.textField.tag = indexPath.row
    cell.textField.delegate = self
    return cell


func textFieldDidEndEditing(textField: UITextField) 
    toDo[textField.tag] = textField.text

【讨论】:

当我将 textField 更改为 textView 时,它起作用了。谢谢!【参考方案2】:

我认为问题在于,每当系统需要重新渲染单元格时,都会调用方法func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath);这发生在您的文本视图有机会将其内容保存在数据模型中之前。在您的情况下,每次按下按钮。我假设您使用可选的func textFieldDidEndEditing(_ textField: UITextField) 委托方法保存文本字段的内容。您可以在此类方法中添加println("SAVING"),在 tableView(...) 方法中添加println("RE-RENDERING CELL"),然后查看事件顺序。不确定这是否有帮助,但我会尝试。

【讨论】:

“保存”方法中的内容是什么? 好的,所以你可能不保存。看看 Abhianav 的新答案:巧妙地使用标签,它应该可以工作。我建议将 println("SAVING") 放在 textFieldDidEndEditing(_ textField: UITextField) 委托方法中,以查看它是否被调用以及何时调用。

以上是关于在运行应用程序时编辑单元格时更新数组的主要内容,如果未能解决你的问题,请参考以下文章

在非手动更改/编辑单元格时触发脚本 - 谷歌脚本

编辑 QTableView 单元格时设置初始文本

表格视图在按钮单击时更新单元格时反弹

编辑单元格时如何在 QTableView 中使用 Enter 键导航

在 iOS 中使用自定义单元格时无法查看 UITableViewCell

在 UITableView (swift2) 中选择单元格时更新/重新加载 ViewController