2014-09-10 97 views
-1

我正在一个简单的tableview上工作,我在这里认真难住。表格视图单元格没有从tableView:objectValueForTableColumn:row:方法获取它们的数据。NSTableView单元格没有从委托方法获取数据

我应该得到的东西是这样的:

enter image description here

,但得到这样的:

enter image description here

这里是我的.h和tableController

类的.m文件
@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。以下

Thew还可以提供更多的信息.​​..

enter image description here

回答

0

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

编辑:

事实上,在你的项目,你需要你的表视图设置为“基于细胞的”内容模式,而不是“查看基于”模式和它的作品!

0

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