2013-03-26 75 views
0

我有一個服務器上的數據,我想在一個tableView中顯示。如何獲得顯示數據在UITableView部分表單數組

的問題是,我要顯示根據類別,所以我有,其具有將區段標題類別陣列類別的數據和它們內部存在的數據,以便用於顯示在部分中的數據我要申報陣列。

例如如果有三個類別,那麼我們必須讓三個數組填充數據,但如果有更多的類別,因爲類別是動態的並且來自服務器。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
return [categoryArray count] ; 
    } 

以及如何設置標題部分的標題,因爲它是在類的數組,所以如果它是部分逐個陣列。

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
    { 


    NSLog(@"Number of Sections"); 
    if(section == 0) 
    return @"Sales"; 
    if(section == 1) 
    return @"Soft Skills"; 
} 

如何在tableView單元格中顯示數據可以爲所有類別創建數組?

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 


if (section==0) 
{ 

    appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    int count=[resultArray count]; 

    NSLog(@"resultArry Row Counts is %d",count); 

    return [resultArray count]; 

} 
else{ 
    appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate]; 

    int count=[resultArrayOne count]; 

    NSLog(@"resultArry Row Counts is %d",count); 

    return [resultArrayOne count]; 
} 
    } 




     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  
    { 

NSLog(@"Table Cell Data"); 


    static NSString *CellIdentifier = @"Cell"; 

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

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 


if (indexPath.section==0) { 



    appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate]; 


    ObjectData *theCellData = [resultArray objectAtIndex:indexPath.row]; 
    NSString *cellValue =theCellData.sub_Category; 
    cell.font=[UIFont fontWithName:@"Helvetical Bold" size:14]; 
    NSLog(@"Cell Values %@",cellValue); 
    cell.textLabel.text = cellValue; 

    return cell; 
} 

else { 



    appDelegate = (MultipleDetailViewsWithNavigatorAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    ObjectData *theCellData = [resultArrayOne objectAtIndex:indexPath.row]; 
    NSString *cellValue =theCellData.sub_Category; 
    cell.font=[UIFont fontWithName:@"Helvetical Bold" size:14]; 

    NSLog(@"Cell Values %@",cellValue); 
    cell.textLabel.text = cellValue; 
    return cell; 



    } 
     } 

回答

0

嘗試下面的代碼。它會解決你的問題:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
     return [categoryArray objectAtIndex:section]; 
} 

編輯:

  1. 首先創建一個模型數據類來存儲您的各類數據。
  2. 使用這個模型類感受到你numberOfRowsInSectioncellForRowAtIndexPath委託功能。
  3. 而不是爲每個類別創建不同的數組。將此數組存儲在一個模型類中。這將很容易處理。
+0

你行,但如何在tableview中顯示做可以創造陣列 – 2013-03-26 06:05:52

+0

是@Rushi但如何播種tableView單元格中的數據根據​​ – 2013-03-26 06:09:05

+0

@ ShahzadAli可以向我顯示cellforrowatindexpath的代碼嗎? – Rushi 2013-03-26 06:09:51

0

使用

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    return [categoryArray objectAtindex:section]; 
} 

的部分標題。

同樣地,存儲每個類別的值在一個nsmutable陣列的NSDictionary以及用於定義UITableViewCell每個類別顯示數據。

+0

但是如何在每個部分的tableView單元格中顯示數據,我必須創建三個數組或單個數組我們可以顯示所有的東西 – 2013-03-26 06:24:31

1

由於從服務器獲取類別似乎不是你的問題,我基於我的答案預充滿陣列更好的可視化。

NSMutableArray *categories = @[@"Cat1", @"Cat2"]; 

// creata a dictionary with all the array for the categorie rows 
NSMutableDictionary *rowDict = @{@"Cat1":@[@"Cat1Row1",@"Cat1Row2",@"..."], 
        @"Cat2":@[@"Cat2Row1", @"Cat2Row2",@"..."] 

此解決方案的關鍵在於您使用類別字符串作爲字典的關鍵字。

您現在可以訪問標題這樣

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section 
{ 
    return categories[section]; 
} 

而且像這樣訪問

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // ... 
    // create or deque a cell like you normally would do 

    // now configure the cell 
    cell.textLable.text = [rowDict[categories[indexPath.section]] objectAtIndex:indexPath.row] 
} 
+0

類別來自服務器,所以我們不能給出固定值,我們將如何添加到字典中,以及如何顯示部分行數 – 2013-03-26 06:58:50

+0

類別來自服務器,所以我們不能給出固定值和我們將如何添加字典以及如何顯示 – 2013-03-26 07:00:41

+0

部分的行數我知道 - 但我不知道如何獲得它們,所以我選擇「填充」它們以獲得更好的可視化,因爲獲取數組似乎不是您的問題。您可以從服務器動態獲取它們。這不會消光。我的解決方案解決了您需要訪問動態計數的問題。對於標題和單元格。 – Pfitz 2013-03-26 07:06:33