0

我在服务器上有要在 tableView 中显示的数据。

问题是我想显示基于类别的数据,所以我有数组类别,其中有类别,这些类别将是部分标题,其中有数据,所以为了在部分中显示数据,我必须声明 Array.

例如,如果有三个类别,那么我们必须创建三个数组来填充数据,但是如果有更多类别,因为类别是动态的并且来自服务器。

   - (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;



   }
      }
4

3 回答 3

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] 
}
于 2013-03-26T06:55:26.620 回答
0

试试下面的代码。它会解决你的问题:

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

编辑 :

  1. 首先创建一个模型数据类来存储您的类别数据。
  2. 使用这个模型类来感受你的numberOfRowsInSection委托cellForRowAtIndexPath功能。
  3. 而不是为每个类别创建不同的数组。将此数组存储在一个模型类中。这将很容易处理。
于 2013-03-26T06:04:51.243 回答
0

利用

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

为章节标题。

同样,将每个类别的值存储在 nsmutable 数组 NSDictionary 中,并在 uitableviewcell 中显示每个类别的数据。

于 2013-03-26T06:05:01.307 回答