我有一个 UITableView在每个部分都有不同的行数。我编写了该代码以尝试获得正确的结果:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier= @"channel";
ChannelsCell *cell= [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(!cell) {
cell =[[ChannelsCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSInteger rowsCountSection = [[arrayofChannelsCount objectAtIndex:indexPath.section] intValue];// this variable has the number of rows of every section
NSUInteger pos = indexPath.section*count+ indexPath.row;
cell.channelName.text=[arrayofChannelName objectAtIndex:pos];
return cell;
}
我很确定这是一个数学问题。
感谢您的帮助。
编辑:
NSMutableArray *arrayofChannelsOffsets=[[NSMutableArray alloc]initWithCapacity:[arrayofChannelsCount count]];
NSNumber* zero = [NSNumber numberWithInteger:0];
[arrayofChannelsOffsets addObject:zero];
for (int j=1; j<[arrayofChannelsCount count]; j++) {
NSUInteger sum=(int)[arrayofChannelsOffsets objectAtIndex:j-1]+(int)[arrayofChannelsCount objectAtIndex:j-1];
NSNumber* num = [NSNumber numberWithInteger:sum];
[arrayofChannelsOffsets addObject:num];
NSLog(@"%lu count offset:",(unsigned long)[arrayofChannelsOffsets count]);
}
for (int i= 0 ; i < indexPath.section ; i++) {
pos =[[arrayofChannelsOffsets objectAtIndex:i] intValue] + indexPath.row;
}
cell.channelName.text=[arrayofChannelName objectAtIndex:pos];
我有奇怪的错误:
'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 267575552 beyond bounds [0 .. 101]'
这个巨大的数字 267575552 确实来自哪里。