我已经坚持了几天这个问题了,我已经多次调试了,无法弄清楚出了什么问题。 我有一个UITableView有三个部分。我想将按钮作为accessoryView和UILabel添加为detailText到第二部分。 View首次加载时看起来不错。
但滚动后,它变为
几次滚动后,它会冻结(不会崩溃)。 以下是我的代码,任何建议将不胜感激。
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section==0) {
return self.status.count;
}
else if (section==1)
return self.overrideCtrl.count;
else
return self.levelStatus.count;
// Return the number of rows in the section.
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MenuCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
NSLog(@"section %@",indexPath);
if (indexPath.section == 0) {
cell.textLabel.text = [self.status objectAtIndex:indexPath.row];
NSLog(@"Status %@",cell.textLabel.text);
}
else if (indexPath.section == 1) {
cell.textLabel.text = [self.overrideCtrl objectAtIndex:indexPath.row];
cell.detailTextLabel.text =[NSString stringWithFormat:@"00:%02d",[[self.timeLeftArray objectAtIndex:indexPath.row] intValue]];//[[self.timeLeftArray objectAtIndex:indexPath.row] stringValue];
cell.accessoryView=[self.checkButtonArray objectAtIndex:indexPath.row];
NSLog(@"override %@",cell.textLabel.text);
}else{
cell.textLabel.text = [self.levelStatus objectAtIndex:indexPath.row];
NSLog(@"level %@",cell.textLabel.text);
}
return cell;
}
谢谢!
答案 0 :(得分:0)
这个问题在SO上有很多,这是因为细胞重用。您需要为其他部分将accessoryView设置为UITableViewCellAccessoryNone,否则,用于第一部分的单元格可能会在另一部分中使用,并且仍然具有其附件视图。
答案 1 :(得分:0)
您只有1 CellIdentifier
。每个部分都应该有不同的部分。