reloadData方法不起作用 - 表为null

时间:2012-05-15 01:32:14

标签: objective-c cocoa nstableview

我的NSTableViewDelegate类中有一个方法可以从外部类重新加载数据表:

- (void)reloadTable {

    NSLog(@"reload data %@", table);
    [table reloadData];
}

当我尝试从外部类调用此方法时,尝试重新加载的表为null:

reload data (null)

我在另一个类中使用以下代码调用此方法:

TableController *delegate = [[TableController alloc] init];
[delegate reloadTable];

现在,我认为这是因为我正在初始化一个表控制器的新实例并在该表控制器的该实例上调用该方法。因此,在我的reloadTable方法中,我使用self.table代替表格 - 这具有相同的结果:

reload data (null)

在.xib中,dataSource和delegate设置为TableController类。我想应该注意的是我使用的是基于视图的tableview而我没有使用绑定。我错过了什么?

编辑:从这些答案中可以看出,这些问题可能是因为这个类只是表视图的数据源和委托。我应该为TableView创建一个ViewController的新类吗?我是否正确地说存在的类将是“Model”类,而我将创建的新类将是MVC中的“Controller”类?

编辑2:我创建了一个TableViewController类,并在“Panel.xib”中将“view”插座设置为我的tableview。在我需要重新加载表的另一个类中,我按如下方式执行:

 TableViewController *tv = [[TableViewController alloc] initWithNibName:@"Panel" bundle:nil];
 [tv.table reloadData];

不会生成错误,但表视图不会重新加载。

1 个答案:

答案 0 :(得分:0)

您需要使用-initWithNibName:bundle:来创建ViewController。

相关问题