NSTableView单元格没有从委托方法获取数据

时间:2014-09-10 14:13:33

标签: objective-c cocoa nstableview

我正在制作一个简单的桌面视图,我在这里感到非常难过。表格视图单元格未从tableView:objectValueForTableColumn:row:方法获取数据。

我应该得到这样的东西:

enter image description here

但得到这样的东西:

enter image description here

这是tableController类的

@interface TableController : NSObject <NSTableViewDataSource, NSTableViewDelegate>

@property (nonatomic, strong) NSArray *numbers;
@property (nonatomic, strong) NSArray *numberCodes;

@end

#import "tableController.h"

@implementation tableController

#pragma mark - Custom Initialisers

- (NSArray *)numbers {

    if (!_numbers) {
        _numbers = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10"];
    }
    return _numbers;
}

- (NSArray *)numberCodes {

    if (!_numberCodes) {
        _numberCodes = @[@"One", @"Two", @"Three", @"Four", @"Five", @"Six", @"Seven", @"Eight", @"Nine", @"Ten"];
    }
    return _numberCodes;
}

-(NSInteger) numberOfRowsInTableView:(NSTableView *)tableView{
    NSLog(@"What Ho tally!");
    return self.numbers.count;
}

-(id) tableView:(NSTableView *)tableView ObjectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{
    if ([tableColumn.identifier isEqualToString:@"numbers"]) {
        NSLog(@"%@", [self.numbers objectAtIndex:row]);

        // first colum (numbers)
        return [self.numbers objectAtIndex:row];


    } else {
        NSLog(@"%@", [self.numberCodes objectAtIndex:row]);
        // second column (numberCodes)
        return [self.numberCodes objectAtIndex:row];

    }
}

@end

数组中的对象正在正确获取NSlog。但不知怎的,它们没有反映在tableView中。

以下内容可能会进一步提供更多信息...

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为你需要使用tableView:setObjectValue:forTableColumn:row:代替-(id) tableView:(NSTableView *)tableView ObjectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{,不是吗?

编辑:

事实上,在您的项目中,您需要将表格视图设置为&#34; Cell Based&#34;内容模式而不是&#34;基于视图&#34;模式,它的工作原理!

答案 1 :(得分:0)

NSTableView应该只为一个主服务器提供服务。你可以有一个包含两个属性的类,例如number和numberCode,并使用该类对象的数组来填充具有这些属性的列。还要确保激活文本字段 - 表格视图单元格的值绑定。