2016-09-23 44 views
-1

我有一个产品对象,但现在我只能在每个表格单元视图中打印它的一个值。我想在一个单元格中显示我的对象的所有内容。当我尝试添加另一个值时,它只抓取我创建的最后一个cellView。我如何用我的所有对象值填充我的单元格?如何在一个NSTableCellView中显示所有对象值?

#import "ProductsViewController.h" 
#import "Product.h" 


@interface ProductsViewController() <NSTableViewDataSource, NSTableViewDelegate> 

@end 

@implementation ProductsViewController 

@synthesize jsonArray, productsArray; 


- (IBAction)tableView:(NSTableView *)sender { 


} 


- (void)viewDidLoad { 
[super viewDidLoad]; 


[self retrieveData]; 



} 


- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView 
{ 
return [self.productsArray count]; 
} 


- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
{ 
static NSString *cellIdentifier = @"cell"; 

NSTableCellView *cellView = [tableView makeViewWithIdentifier:cellIdentifier owner:self]; 

if (cellView == nil) 
{ 
    NSLog(@"A cell"); 

    cellView = [[NSTableCellView alloc] init]; 
    [cellView setIdentifier:cellIdentifier]; 
} 
Product * productObject; 
productObject = [productsArray objectAtIndex:row]; 


cellView.textField.stringValue = productObject.product_name; 

return cellView; 
} 



- (void) retrieveData{ 

NSString * url = @"myurl"; 

NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]]; 

NSString *DataResult = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

NSLog(@"%@",DataResult); 


jsonArray = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 

productsArray = [[NSMutableArray alloc] init]; 


for(int i = 0; i < jsonArray.count; i++){ 

    NSString * pID   = [[jsonArray objectAtIndex:i] objectForKey:@"id"]; 
    NSString * pName  = [[jsonArray objectAtIndex:i] objectForKey:@"product_name"]; 
    NSString * pPrice  = [[jsonArray objectAtIndex:i] objectForKey:@"product_price"]; 
    NSString * pDescription = [[jsonArray objectAtIndex:i] objectForKey:@"product_description"]; 
    NSString * pImage  = [[jsonArray objectAtIndex:i] objectForKey:@"product_image"]; 
    NSString * pDownload = [[jsonArray objectAtIndex:i] objectForKey:@"product_download"]; 
    NSString * pVideo  = [[jsonArray objectAtIndex:i] objectForKey:@"product_video"]; 
    NSString * pFeatured = [[jsonArray objectAtIndex:i] objectForKey:@"featured"]; 


    [productsArray addObject:[[Product alloc] initWithProduct_Name: pName andProduct_Price:pPrice andProduct_Description:pDescription andProduct_Image:pImage andProduct_Download:pDownload andProduct_Video:pVideo andProduct_Featured:pFeatured andProduct_ID:pID]]; 
} 




} 

@end 

回答

0

万一有人在乎......您必须创建一个自定义单元格并为您的自定义单元格类标签并将您的对象的值分配给标签。确保将新的自定义类导入到视图控制器中。现在,每个单元格都可以使用数据库/ API/JSON中的许多标签,图像和内容进行自定义。

Custom.h

#import <Cocoa/Cocoa.h> 

@interface Custom : NSTableCellView 

@property (weak) IBOutlet NSTextField *label1; 

@property (weak) IBOutlet NSTextField *label2; 

@end 

Custom.m

#import "Custom.h" 

@implementation Custom 

@synthesize label1, label2; 

@end 

的TableView

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
{ 
static NSString *cellIdentifier = @"cell"; 

Custom *cellView = [tableView makeViewWithIdentifier:cellIdentifier owner:self]; 

if (cellView == nil) 
{ 
    NSLog(@"A cell"); 

    [cellView setIdentifier:cellIdentifier]; 
} 



Product * productObject; 
productObject = [productsArray objectAtIndex:row]; 

cellView.textField.stringValue = productObject.product_image; 
cellView.label1.stringValue = productObject.product_name; 
cellView.label2.stringValue = productObject.product_price; 




return cellView; 
} 
相关问题