Я все еще нахожусь в процессе ознакомления с iPhone SDK.
Вот что я пытаюсь сделать:
У меня есть UIScrollView, и у каждого вида прокрутки есть UITableView, и я реализовал пользовательский UITableViewCell.
Требуемая функциональность изначально не имеет выбора, затем пользователь выбирает строку и прокручивает и делает другой выбор в следующем просмотре прокрутки и продолжает. Я хочу, чтобы выбор остался, чтобы пользователь мог изменить выбор на более позднем этапе.
Однако в моем случае происходит следующее: первый и второй UITableView в порядке, выбранная строка остается выбранной, но в третьем UITableView я вижу выбранную строку «уже», которая совпадает с первым UITableView. Я не хочу видеть ни одного выбранного.
Я знаю, что делаю глупости, но не могу понять, что. Любая помощь будет очень признательна.
Спасибо,
Amy
Вот соответствующие источники данных и методы делегатов.
- (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;
}
}