如何从表视图中正确获取行值?

时间:2013-06-11 20:05:18

标签: objective-c uitableview ios6

我已经实现了每次都返回0的代码。我试图从一个可变数组中删除一个字符串,并在按下按钮后选择了行值。

相关代码:

- (IBAction)remove:(id)sender {
    NSIndexPath *selectedIndexPath = [_tableView2 indexPathForSelectedRow];
    [names removeObject:[NSString stringWithFormat:@"%i",selectedIndexPath.row]];
    testLabel.text=[NSString stringWithFormat:@"%i",selectedIndexPath.row];
    [_tableView2 reloadData];
}

每次按下按钮时,测试标签显示0,无论选择哪个桌面视图。

如果您希望我发布其他相关代码(例如tableView),请告诉我。

2 个答案:

答案 0 :(得分:1)

而不是:

[names removeObject:[NSString stringWithFormat:@"%i",selectedIndexPath.row]];

尝试:

[name removeObjectAtIndex:selectedIndexPath.row];

此外,不要使用@“%i”,请尝试使用@“%d”,如上所述here

希望这有帮助!

答案 1 :(得分:1)

对于UITableView,所选行概念仅在用户触摸该行时有效。因此,indexPathForSelectedRow被记录为返回“标识所选行的行和节索引的索引路径,如果索引路径无效,则为nil。”

我的意见是您获得了nil结果,之后在row中调用nil方法会导致您看到的名称为零。

解决方案取决于您的其他数据源实现,但可能会涉及将已点击的索引存储在didSelectRowAtIndexPath:中以便稍后在您的remove方法中使用它。

(我猜你没有使用allowsMultipleSelectionDuringEditing选项,也没有编辑表格。)