我看到有很多关于此的问题,但没有任何帮助我完成这项工作。 我有一个NIST,带有三列(带有正确的标识符集)的NSTableView和一个名为ShortcutsTableController的类。在nib中,我有一个类值为ShortcutsTableController的NSObject。我也像往常一样将NSTableView连接到我的控制器。
这是标题ShortcutsTableController.h
。
#import <Cocoa/Cocoa.h>
@interface ShortcutsTableController : NSObject <NSTableViewDataSource> {
IBOutlet NSTableView *shortcutsTable;
NSMutableArray *shortcutsList;
}
- (int) numberOfRowsInTableView: (NSTableView*) tableView;
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row;
@property (assign) IBOutlet NSTableView *shortcutsTable;
- (void)setUpTable;
@end
这是实施文件ShortcutsTableController.m
。
#import "ShortcutsTableController.h"
@implementation ShortcutsTableController
@synthesize shortcutsTable;
- (void)setUpTable {
shortcutsList = [[NSMutableArray alloc] init];
NSDictionary *dict1 = [NSDictionary dictionaryWithObjectsAndKeys:
@"blabla", @"nameColumn",
@"Bla bla bla", @"shortcutColumn",
@"Ribla", @"actionColumn", nil];
[shortcutsList addObject:dict1];
[shortcutsTable setDataSource:self];
[shortcutsTable reloadData];
}
-(int) numberOfRowsInTableView: (NSTableView *) tableView {
return [shortcutsList count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row {
if (row != -1)
return [[shortcutsList objectAtIndex:row] objectForKey:[tableColumn identifier]];
return nil;
}
@end
但是当我尝试构建时,NSTableView中没有任何内容。没有错误,没有警告。请注意,我从Delegate类方法awakeFromNib
中调用setUpTable。
我做错了吗?谢谢你的帮助。
-Albé
更新。标题中添加了行@property (assign) IBOutlet NSTableView *shortcutsTable;
,实现中添加了@synthesize shortcutsTable;
。没有什么变化。 :(
答案 0 :(得分:0)
shortcutsList中有多少个对象?
尝试在除数据源方法之外的其他任何地方遍历字典,以查看它是否正确显示数据。
另外,您是将控制器设置为IB中该表的数据源还是在awakeFromNib中手动设置?
答案 1 :(得分:0)
根据NSLog
中setUpTable:
声明的结果,您没有设置IBOutlet。也许你做了,但它以某种方式迷路了(撤消,覆盖,意外删除它等)。您需要返回Interface Builder并重新建立xib中ShortcutsTableController
和NSTableView
之间的连接。
答案 2 :(得分:0)
更新shortcutList时是否正在调用[table reloadData]?
答案 3 :(得分:0)
尝试添加
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
代码,其中1是表格中的部分数量