0

问题最初发布在这里:http ://www.daniweb.com/software-development/objective-c/threads/453854/nstableview-is-not-updating-correctly 也有完整的代码。

图形用户界面:

我正在使用 NSMutableArray 来存储在我的表单上填充 NSTableView 的字符串。我正在使用按钮操作来删除指定的行。行使用存储在 int 中的值指定,当您单击表格时会更新。

当我单击表单上的按钮时,它会激活此方法:

-(IBAction)removeFromList:(id)sender
{
    NSLog(@"count: %d, at: %d\n",count,at);
    if(at<count)
    {
          [list removeObjectAtIndex:at];
    }
    [_table reloadData];
    at=count+1;
    count--;
    [_label setStringValue:[self converttonsstring:at]];
}

table指向table,removeFromList从remove中调用,int at指定要删除哪一行,list为NSMutableArray,count为总行数。_label 指向屏幕底部的标签,告诉我 at 指向的位置。我得到以下输出:

2013-05-04 02:32:17.874 ToDoList[571:903] count: 7, at: 2
2013-05-04 02:32:34.763 ToDoList[571:903] *** -[NSCFArray objectAtIndex:]: index (6) beyond bounds (6)

最后一行不断重复。我不知道这里发生了什么或我应该看什么。据我所知,这是我项目中唯一不起作用的部分。任何帮助或我应该看的东西都非常感谢。

4

1 回答 1

3

count从 中删除对象后,您不会递减变量list,因此numberOfRowsInTableView:仍会返回旧值,因此tableView:objectValueForTableColumn:row:使用数组中不再存在的行调用该值。

于 2013-05-04T19:37:55.777 回答