我无法更新我的NSTableView

时间:2017-08-04 15:11:36

标签: objective-c macos cocoa nstableview

我在我的应用程序中有一个tableview,我需要更新它,但我不能让它工作。 首先,我更清楚地发布了arraycontroller,tableview和将数据插入到我的tableview中的代码。

首先是arraycontroller:

ArrayController

我的桌面视图:

My tableview1

Tableview

enter image description here

这就是我配置tableview和数组控制器的方式。要将数据插入到我的tableview中,我使用了keydown方法。因此,当用户按下字母“i”时,将插入一行数据。

   -(void)keyDown:(NSEvent *)event
  {
       static int i = 1;
      NSString * str = [NSString stringWithFormat:@"%i", i];
      NSMutableString *str2 = [NSMutableString string];
    [str2 appendString:@"Task "];
   [str2 appendString:str];

if([event keyCode] == 0x22 && projectState == YES)
{




    dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], @"check",str,@"numero",str2,@"designation",@"1",@"durpr",datedebutProjet,@"debpr",datefin,@"finpr",datedebutProjet,@"debpr1",datefin,@"finpr1",@"0",@"mgt", nil];


    [_arrayController addObject:dict];

    [check setTag:i];


nbrTask = i;
    i++;}
  }

我对此没有问题,但我无法更改tableView中的数据。我用它来获取数据:

int Row = [tableView selectedRow];
NSString * designation = [[[_arrayController arrangedObjects]objectAtIndex:Row]valueForKey:@"designation"];

并尝试以这种方式替换它:

 [[[_arrayController arrangedObjects]objectAtIndex:Row] setValue:finalString forKey:@"designation"];

但它不起作用。然后我尝试了它[tableView reloadData]。但它没有改变任何东西。没有数据被修改。请帮助我,我迷路了

1 个答案:

答案 0 :(得分:0)

我忘记了目标c接受以nil为值的变量。我后来在我的代码中输入了一个拼写错误,这给了我的NSString一个零值,这就是为什么它没有显示任何东西。无论如何,谢谢大家的帮助!