我仍在熟悉 iPhone SDK 的过程中。
这就是我想要做的:
我有一个 UIScrollView,每个滚动视图都有一个 UITableView,我已经实现了一个自定义 UITableViewCell。
所需的功能是最初没有选择,然后用户选择行并滚动并在下一个滚动视图中进行另一个选择并继续。我希望选择保留,因此用户可以稍后更改选择。
然而,在我的情况下发生的事情是 - 第一个和第二个 UITableViews 都很好,选定的行保持选中状态,但是在第三个 UITableView 中,我看到一行“已经”被选中,与第一个 UITableView 相同。我不想看到任何被选中的。
我知道我在做一些愚蠢的事情,但不知道是什么。任何帮助将非常感激。
谢谢,艾米
以下是相关的数据源和委托方法。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%s", __FUNCTION__);
static NSString * ChoiceTableCellIdentifier = @"ChoiceTableCellIdentifier";
choiceTableCell = (ChoiceTableCell *)[tableView dequeueReusableCellWithIdentifier:ChoiceTableCellIdentifier];
if( choiceTableCell == nil )
{
choiceTableCell = [[[ChoiceTableCell alloc]
initWithFrame:CGRectZero
reuseIdentifier:ChoiceTableCellIdentifier] autorelease];
}
return choiceTableCell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"%s", __FUNCTION__);
int newRow = [indexPath row];
int oldRow = [lastIndexPath row];
if ( (newRow != oldRow) || (newRow == 0) )
{
UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
UIImageView *indicatorN = (UIImageView *)[newCell.contentView viewWithTag:SELECTION_INDICATOR_TAG_1];
indicatorN.image = [UIImage imageNamed:@"selected.png"];
newCell.backgroundView.backgroundColor = [UIColor clearColor];
UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:lastIndexPath];
UIImageView *indicatorO = (UIImageView *)[oldCell.contentView viewWithTag:SELECTION_INDICATOR_TAG_1];
indicatorO.image = [UIImage imageNamed:@"notSelected.png"];
oldCell.backgroundView.backgroundColor = [UIColor clearColor];
lastIndexPath = indexPath;
}
}