【问题标题】:How to reload a table from another class? - Cocoa如何从另一个类重新加载表? - 可可
【发布时间】:2012-03-04 05:25:53
【问题描述】:

我一直在尝试这样做,我有一个 tableViewController 类和我的 AppDelegate 类,而 tableViewController 类显然是表的数据源。但是我希望表在启动时加载,除了从 AppDelegate 中的 applicationDidFinishLaunching 方法中的 tableViewController 类调用表加载方法之外,我想不出任何其他方法来做到这一点。但这似乎行不通。什么都没有发生,只是一张空白的桌子。

这是tableViewController的加载方法:

-(void)loadTable {
NSString* path = [@"~/" stringByExpandingTildeInPath];
self.list = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil];
[tableView reloadData];
}

这就是我从 AppDelegate 调用它的地方

#import "tableViewController.h"
//other code

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    tableViewController *tableClass = [[tableViewController alloc] init];
    [tableClass loadTable];
}

我仍然无法弄清楚为什么这不起作用。如果这不是正确的方法,请告诉我。

【问题讨论】:

  • 看起来像一个长期的关系lol 你用什么作为你的表的数据?数组?数据库?核心数据?如果您的数据池中没有任何非标准对象,则后者将是最方便的。对于基本的表格内容,请尝试:cocoa-coding.de/todo/todo.html 不幸的是,那个是德语的,但是查看代码和图像可能会给您一些方向。对于核心数据,试试这篇文章:cocoadevcentral.com/articles/000085.php 总而言之:获得更详细的信息,我们可以提供帮助!干杯,生活
  • 现在我正在使用 NSTableViewDataSource 协议,tableViewController 类是表视图的数据源。但是我似乎无法从另一个类调用重新加载方法,它只是不起作用。

标签: cocoa class nstableview


【解决方案1】:

试试这个

数据源

创建继承自NSObject 并符合NSTableViewDataSource 的新实现和接口。

Datasource必须实现三个方法:

- (int)numberOfRowsInTableView:(NSTableView *)aTableView;

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex;

你可以在NSTableViewDataSource Protocol Reference阅读这些方法

表格视图

- (void)awakeFromNib方法中设置数据源[self setDataSource:datasource];并重新加载表数据[self reloadData];

希望对你有帮助!

【讨论】:

  • 好吧,我已经在 tableViewController 类中使用了这些方法,但我无法从 AppDelegate 重新加载它,所以...
猜你喜欢
  • 1970-01-01
  • 2018-06-13
  • 1970-01-01
  • 2017-12-07
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多