我已经实现了每次都返回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),请告诉我。
答案 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
选项,也没有编辑表格。)