UITableView在每个部分的单元格

时间:2015-06-26 19:24:38

标签: ios objective-c uitableview

我有一个字符串数组,并希望我的UITableView中的每个部分都使用相应的字符串作为其行的标题。而不是这样做,它只是取数组中的第一个字符串并在每个部分重复它。

我似乎无法弄清楚我在设置方面做错了什么。我有indexPath.sectionagendaTableArray值记录,当我滚动表格时它会正确记录,但它仍然只显示第一个值。

阵列设置:

- (void)viewDidLoad
{
    [super viewDidLoad];

 /// code clipped for brevity

    self.agendaTableArray = [[NSArray alloc] init];

    self.agendaTableArray = @[@"No events today!", @"No events today!", @"Dinner with Rebekah", @"Soccer game", @"Dentist appt.", @"Celebrate job offer, drinks with Pierre!", @"No events today!", @"No events today!", @"No events today!", @"No events today!", @"No events today!", @"No events today!", @"No events today!", @"No events today!", @"No events today!", @"No events today!", @"No events today!"];

}

表格设置:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"MyReuseIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:MyIdentifier];
    }

    NSLog(@"the indexpath.section is: %ld", (long)indexPath.section);
    NSLog(@"the agendaTableArray title is: %@", self.agendaTableArray[indexPath.section]);


    cell.textLabel.text = self.agendaTableArray[indexPath.row];
    cell.textLabel.font = [UIFont systemFontOfSize:14];

    [self whatSectionsAreVisible];

    return cell;
}

2 个答案:

答案 0 :(得分:4)

您应该考虑检查每个部分的行数。换句话说,您可能会为- (NSInteger)numberOfRowsInSection'返回值1,因此您始终使用第一行的索引,即0。

您可能想要使用:

cell.textLabel.text = self.agendaTableArray[indexPath.section];

答案 1 :(得分:0)

我认为问题出在以下几行:

cell.textLabel.text = self.agendaTableArray[indexPath.section];

应该是:

cell.textLabel.text = self.agendaTableArray[indexPath.row];

我假设您希望阵列上的每个项目都有一行,而不是阵列上每个项目的一个部分。