2014-11-04 53 views
0

下午好,的TableView導航使用JSON(數據庫數據)

我用下面的教程創建的TableView導航:http://www.techotopia.com/index.php/Implementing_TableView_Navigation_using_Xcode_Storyboards但那個例子我可以顯示靜態信息。

現在我需要顯示來自我的數據庫的圖像和文本,我需要一些幫助來做到這一點。

目前,這是我的CarTableViewController.m

#import "CarTableViewController.h" 
#import "CarTableViewCell.h" 
#import "CarTableViewController.h" 
#import "CarDetailViewController.h" 

@implementation CarTableViewController 

@synthesize carMakes = _carMakes; 
@synthesize carModels = _carModels; 
@synthesize carImages = _carImages; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.carMakes = [[NSArray alloc] 
        initWithObjects:@"Chevy", 
        @"BMW", 
        @"Toyota", 
        @"Volvo", 
        @"Smart", nil]; 

    self.carModels = [[NSArray alloc] 
         initWithObjects:@"Volt", 
         @"Mini", 
         @"Venza", 
         @"S60", 
         @"Fortwo", nil]; 

    self.carImages = [[NSArray alloc] 
         initWithObjects:@"chevy_volt.jpg", 
         @"mini_clubman.jpg", 
         @"toyota_venza.jpg", 
         @"volvo_s60.jpg", 
         @"smart_fortwo.jpg", nil]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [self.carModels count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"carTableCell"; 

    CarTableViewCell *cell = [tableView 
           dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[CarTableViewCell alloc] 
       initWithStyle:UITableViewCellStyleDefault 
       reuseIdentifier:CellIdentifier]; 
    } 

    // Configure the cell... 
    cell.makeLabel.text = [self.carMakes 
          objectAtIndex: [indexPath row]]; 

    cell.modelLabel.text = [self.carModels 
          objectAtIndex:[indexPath row]]; 

    UIImage *carPhoto = [UIImage imageNamed: 
         [self.carImages objectAtIndex: [indexPath row]]]; 

    cell.carImage.image = carPhoto; 

    return cell; 
} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"ShowCarDetails"]) 
    { 
     CarDetailViewController *detailViewController = 
     [segue destinationViewController]; 

     NSIndexPath *myIndexPath = [self.tableView 
            indexPathForSelectedRow]; 

     detailViewController.carDetailModel = [[NSArray alloc] 
               initWithObjects: [self.carMakes 
                   objectAtIndex:[myIndexPath row]], 
               [self.carModels objectAtIndex:[myIndexPath row]], 
               [self.carImages objectAtIndex:[myIndexPath row]], 
               nil]; 
    } 
} 

@end 

我需要從我的數據庫(作者,日期和圖片),以carMakes,carModels和carImages顯示它把信息。我可以使用JSON從我的PHP文件中獲取值,但是我需要使用帶有JSON結果的NSArray一些幫助,因爲我從來沒有使用它。

我該怎麼做?

這是我的JSON結果:

[{"id":"15","user":"1","image":"http:\/\/farmaventas.es\/images\/farmaventaslogo.png","date":"2014-09-13"}] 

在此先感謝。

+0

您的數據組織錯誤。每節有一個數組,並且數組的元素是字典。然後你就可以解析你的JSON並且直接在那裏播放它(儘管有一個例程把每一行的數據複製到一個新的字典中來清理一些東西通常會更好)。 – 2014-11-04 22:08:54

+0

你能給我舉個例子嗎?謝謝@熱舔 – JulienKP 2014-11-04 22:15:41

回答

0
NSMutableArray* dataSource = [[NSMutableArray alloc] init]; 
NSMutableDictionary* chevyVolt = [[NSMutableDictionary alloc] init]; 
chevyVolt[@"Make"] = @"Chevy"; 
chevyVolt[@"Model"] = @"Volt"; 
chevyVolt[@"Image"] = @"chevy_volt.jpg"; 
dataSource[0] = chevyVolt; 
NSMutableDictionary* clubman = [[NSMutableDictionary alloc] init]; 
-- etc -- 

內cellForRow--

NSMutableDictionary* cellData = dataSource[[indexPath row]]; 
cell.makeLabel.text = cellData[@"Make"]; 
cell.modelLabel.text = cellData[@"Model"]; 
-- etc -- 

當您收到JSON數據,你必須決定它屬於哪一行。如果您不知何故知道id 15是用於雪佛蘭Volt,那麼您可能會將信息從相應的JSON元素中複製到Chevy Volt字典中。 (或者,如果您等待接收JSON以添加Chevy Volt行(看起來更可能),則可以像上面那樣爲Volt構建字典,並將其添加到dataSource數組的末尾,並添加來自JSON的信息。 )

+0

嗨熱舔。我發現自己在類似的東西,我需要幫助,因爲我加載了一個自定義PHP文件的信息,然後我輸出JSON格式的信息,如JulienKP。我要如何繼續?我必須複製你的代碼?謝謝@熱舔。 – Wiraj 2014-11-05 08:02:38

+0

感謝@Hot Links,但是我也想知道在顯示我的JSON結果後我必須做什麼,因爲我有點迷路。你能告訴我一個如何爲我的JSON做到這一點的例子嗎? – JulienKP 2014-11-05 08:06:46

+0

@JulienKP - 我不知道你打算如何匹配你的JSON數據與汽車數據。從技術上講,這並不難,但你需要知道你想要什麼相關的東西。 – 2014-11-05 12:02:03