【问题标题】:reloadData method not working - table is nullreloadData 方法不起作用 - 表为空
【发布时间】:2012-05-15 01:32:13
【问题描述】:

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

- (void)reloadTable {

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

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

reload data (null)

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

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

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

reload data (null)

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

编辑:从这些答案看来,这些问题可能是由于此类只是表视图的数据源和委托而引起的。我应该为 TableView 创建一个 ViewController 的新类吗?我是否正确地说存在的类将是“模型”类,而我将创建的新类将是 MVC 中的“控制器”类?

编辑 2:我创建了一个 TableViewController 类并将“视图”出口设置为“Panel.xib”中的表视图。在我需要从中重新加载表的另一个类中,我执行以下操作:

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

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

【问题讨论】:

    标签: objective-c cocoa nstableview


    【解决方案1】:

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

    【讨论】:

    • 如果表格视图位于已加载的 .xib 中并且 .xib 属于另一个类,这是否会变得复杂?
    • @rick 可能,但我不这么认为。它应该工作得很好,试一试看看效果如何。
    • 更新了原来的问题,还是不行。这是你的建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多