我想使用多个部分制作tableView但我不想使用字典我有一个包含3行的数组,每行都有title,description和userName。
由于数组中有3行,我希望tableview中有3个部分,每个部分应该有3行;像
的userName
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [self.listOfdata count];
}
- (NSInteger)tableView:(UITableView *)tableViewnumberOfRowsInSection:(NSInteger)section {
return 3;
}
如何编写cellForRowAtIndexPath方法以获得所需的结果?
答案 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