【问题标题】:I can't get my NSTableView updated我无法更新我的 NSTableView
【发布时间】:2018-01-12 14:15:45
【问题描述】:

我的应用中有一个 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]。但这并没有改变什么。没有数据被修改。请帮帮我,我迷路了

【问题讨论】:

  • 不相关,但强烈建议使用基于视图的单元格。它更容易处理。并使用自定义类而不是可变字典。这更舒服——尤其是与阵列控制器结合使用——也是。
  • 数据是否按预期变化?
  • 不,它根本没有改变,这就是问题

标签: objective-c macos cocoa nstableview


【解决方案1】:

我忘记了目标 c 接受 nil 作为值的变量。我后来在我的代码中做了一个错字,这给了我的 NSString 一个 nil 值,这就是它没有显示任何东西的原因。无论如何,谢谢大家的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多