我对 iPhone 编程很陌生,所以我的问题可能是由于完全缺乏对基本原理的了解造成的。
我正在开发一个有两个视图的 iPhone 应用程序。第一个视图有两个按钮,当按下其中一个按钮时,会弹出一个带有表格视图的模态视图。根据按下的按钮,此表视图的填充方式不同。如果按下按钮 button1,则 tableview 将填充 button1Data。用户可以选择单元格,如果这样做,则单元格附件类型设置为 UITableViewCellAccessoryCheckmark。然后我将检查的单元格的名称保存到 tableViewListChecked 中,以便以后可以决定在数据更改时应该检查哪个单元格。
问题如下:关闭modalview后,我选择button2在button1Data中选择的单元格仍然在button2Data中选择。我很清楚 [theTableView reloadData] 函数正在工作,因为数据确实发生了变化,但是在我将单元格从屏幕上滚动之前,附件仍然是相同的。
PS如果我确实滚动屏幕的单元格,那么附件类型设置正确。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
}
else if ([tableViewListChecked containsObject:[NSString stringWithString:cell.textLabel.text]]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
cell.textLabel.text = [tableViewList objectAtIndex:indexPath.row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if (![tableViewListChecked containsObject:[NSString stringWithString:cell.textLabel.text]]) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
[tableViewListChecked addObject:[NSString stringWithString:cell.textLabel.text]];
}
else if ([tableViewListChecked containsObject:[NSString stringWithString:cell.textLabel.text]]) {
cell.accessoryType = UITableViewCellAccessoryNone;
[tableViewListChecked removeObject:[NSString stringWithString:cell.textLabel.text]];
}
}
谢谢你的帮助!