0

我看到有很多关于此的问题,但没有任何帮助我完成这项工作。我有一个带有 NSTableView 的笔尖,其中包含三列(设置了正确的标识符)和一个名为 ShortcutsTableController 的类。在笔尖中,我有一个类值为 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 Class Method 中调用了 setUpTable awakeFromNib

有什么我做错了吗?谢谢你的帮助。

——阿尔贝

更新。@property (assign) IBOutlet NSTableView *shortcutsTable;在标题和实现中添加了行@synthesize shortcutsTable;。没有什么变化。:(

4

4 回答 4

0

快捷方式列表中有多少个对象?

尝试在除数据源方法之外的其他任何地方迭代字典,以查看其是否正确显示数据。

另外,您是在 IB 中将控制器设置为该表的数据源还是在您的 awakeFromNib 中手动设置?

于 2009-12-04T12:18:21.557 回答
0

根据您在 中的NSLog语句的结果setUpTable:,您没有设置 IBOutlet。也许你做到了,但它不知何故丢失了(撤消、覆盖、意外删除等)。您需要返回 Interface Builder 并重新建立与 xib 之间的ShortcutsTableController连接NSTableView

于 2009-12-05T01:50:52.427 回答
0

更新快捷方式列表时是否调用 [table reloadData]?

于 2009-12-05T15:53:37.237 回答
0

尝试添加

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

到您的代码,其中 1 是您表中的部分数

于 2010-03-21T22:13:30.017 回答