【问题标题】:How to get the value of editable cells in a UITableView? Swift如何获取 UITableView 中可编辑单元格的值?迅速
【发布时间】:2015-11-13 10:11:31
【问题描述】:

我有一个包含多个单元格的 UITableView。每个单元格都有一个 标签和 UITextField。当我加载 ViewController 时,UITextFields 具有初始值,用户可以编辑这些值。现在我想添加一个保存按钮来保存更改,但是在编辑后获取 UITextFields 中的值时遇到问题。我想我需要为文本字段使用标签,但我不知道如何。这是我的代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell:EditProfileCell = tableView.dequeueReusableCellWithIdentifier("profile") as! EditProfileCell
    if (indexPath.row == 1){
    cell.setRow("label", value: "initial value")
    cell.itemValue.tag = indexPath.row
}

@IBAction func saveTapped(sender: UIButton) {
    print(self.tableView(profileTableView, cellForRowAtIndexPath: NSIndexPath(forRow: 1, inSection: 1)).viewWithTag(1))
}

当点击保存按钮时,它会打印初始值而不是编辑后的值。我需要帮助才能在编辑后获取值。

EDIT1:

我发现我可以在 didSelectRowAtIndexPath 函数中获取编辑后的值。但问题是当我点击文本字段(文本字段进入编辑模式)时,在我点击单元格内但文本字段外的空间之前不会调用 didSelectRowAtIndexPath。所以我的问题变成了当我只点击文本字段时如何触发 didSelectRowAtIndexPath。

【问题讨论】:

标签: ios swift uitableview


【解决方案1】:

问题在于,当您在内部调用 saveTapped 时,您正在调用 cellForRowAtIndexPath 并且在其中您有:

cell.setRow("label", value: "initial value")

基本上这就是您获得初始值的原因。另一个问题是表格视图上的单元格被重用。也就是说,您可以拥有 1000000 条记录,但表格视图只会创建约 9-12 个单元格,并将使用它们来显示这 1000000 行中的任何一行的信息。

您需要做的是拥有model。某种对象,您可以在其中存储和检索单元格的这些值。在您的情况下,一个自然的选择是一个包含字符串的数组。请检查此tutorial 并特别注意其中如何使用NSArray *tableData;

祝你好运! :D

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多