如何在UITableview中实现多个部分

时间:2015-12-28 08:41:06

标签: ios uitableview

我想使用多个部分制作tableView但我不想使用字典我有一个包含3行的数组,每行都有title,description和userName。

由于数组中有3行,我希望tableview中有3个部分,每个部分应该有3行;像

  1. title
  2. description
  3. 的userName

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
          return [self.listOfdata count];
    }
    
    - (NSInteger)tableView:(UITableView *)tableViewnumberOfRowsInSection:(NSInteger)section {
         return 3;
    }
    
  4. 如何编写cellForRowAtIndexPath方法以获得所需的结果?

2 个答案:

答案 0 :(得分:1)

我看到你已经走对了路。现在,您只需实施cellForRowAtIndexPath即可。您可以这样实现:

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"yourCellIdentifier"];

    if (indexPath.row == 0)
    {
        cell.textLabel.text = [self.yourListTitle objectAtIndex:indexPath.section];

    } else if (indexPath.row == 1) {
        cell.textLabel.text = [self.yourListDescription objectAtIndex:indexPath.section];
    } else  {
        cell.textLabel.text = [self.yourListName objectAtIndex:indexPath.section];
    }

    return cell;
}

在我的情况下,我在故事板上创建默认单元格。依靠你的方式创建单元格会有一些区别。

答案 1 :(得分:1)

成像你有3个数组,如你所说的具有这样的结构

$scope.openModal = function() {
    $scope.modalInstance = $uibModal.open({
      animation: $scope.animationsEnabled,
      templateUrl: 'my-modal.html',
      size: 'lg',
      scope: $scope,
      resolve: {
        items: function() {
          return $scope.items;
        }
      }
    });
  }

...

$scope.modalInstance.close();

现在你需要将这个数组包含在另一个包含所有3个数组的数组中,比如这个

Array1 = [@"title1",@"head1",@"body1"];
Array2 = [@"title2",@"head2",@"body2"];
Array3 = [@"title3",@"head3",@"body3"];

现在你可以写下mainArray = [array1,array2,array3]; 这样的

cellForRowAtIndexPath

P.S - 最好将mainArray构造为像这样的字典数组

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

 static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

NSArray *currentArray = [mainArray objectAtIndex:indexPath.row];//here you have the array array1 for row 1,respectively.
cell.title = currentArray[0];//as title is at first index
cell.head = currentArray[1];//as head is at second index
cell.description = currentArray[2];//as description is at third index

return cell;

}

和每个字典一样

mainArray = @[dic1,dic2,dic3];

因为您可以在 dic1 = @{@"title":@"titleTextString",@"description":@"descriptionTextString",@"head":@"headTextString"} 中匹配此词典的键。

然后你的方法看起来像这样

cellForRowAtIndexPath

对于这两种方法,- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; NSDictionary *currentDic = [mainArray objectAtIndex:indexPath.row];//here you have the array array1 for row 1,respectively. cell.title = [currentDic objectForKey:@"title"] cell.head = [currentDic objectForKey:@"head"]; cell.description = [currentDic objectForKey:@"description"]; return cell; } numberOfRows看起来像这样

numberOfSections