我正在寫一個包含2個部分的UITableView。當表第一次加載所有單元格顯示正確的信息時,但是當我開始向上和向下滾動時,單元格detailedTextLabel和accessoryType正在刷新不正確,因此一些只應包含detailedTextLabel的單元格也包含附件和單元格應該只包含一個附件還包含一個detailedTextLabel。UITableView在滾動時沒有正確更新
Inside cellForRowAtIndexPath:
我正在使用嵌套的開關/ case語句將正確的值應用到其各自的節/行中的單元格。據我所知,這些陳述中的邏輯是正確的,那麼在更新時,cell
變量的值是否可能會降低呢?
該表正確加載,但在滾動accessoryType和detailedTextLabel後混淆起來。
Click for link to screen shots of the table.
這裏是我的UITableViewController子類中的代碼:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [sectionNames count];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
NSArray *headingsSection = [cellTitles objectAtIndex:section];
return [headingsSection count];
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [sectionNames objectAtIndex:section];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
self.tableView.allowsSelection = YES;
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [[cellTitles objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
cell.textLabel.textColor = [UIColor blackColor];
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
switch (indexPath.section) {
case 0:
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d%%", [[assistSettingsArray_glob objectAtIndex:indexPath.row] intValue]];
break;
case 1:
switch (indexPath.row) {
case 0:
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 1:
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
break;
case 2:
if (defaultAssistOn) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
break;
}
break;
}
return cell;
}
此外,如果您決定添加子視圖到內容視圖,您需要刪除那些像'[[[contentView]子視圖] makeObjectsPerformSelector:@selector(removeFromSuperview)];'' – Winder 2010-12-15 13:39:05
哦,太棒了,這已經完美地解決了這個問題。非常感謝。 :) – Sabobin 2010-12-15 13:54:32