2014-09-10 87 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,並使用該類對象的數組來填充具有這些屬性的列。還要確保文本字段 - 表格視圖單元的值綁定已激活。