2016-09-23 47 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; 
} 
相關問題