gpt4 book ai didi

ios - 在 didSelectRowAtIndexPath 之后禁用选择其他单元格

转载 作者:行者123 更新时间:2023-11-28 22:14:07 25 4
gpt4 key购买 nike

在我的应用中选择正确的单元格后,我需要禁用选择其他单元格。
因此,如果用户选择了错误的答案,他可以选择其他单元格,但如果选择了正确的答案,他就不能这样做。
帮助我解决我的问题。我的代码是:

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
NSInteger rowNumber = [indexPath row];
NSArray *array = [self getAnswers];
if (rowNumber == 0)
{
cell.contentView.backgroundColor = [UIColor whiteColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
if (rowNumber == [array[array.count - 2] intValue])
{
cell.contentView.backgroundColor = [UIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:1.0];
[_rightAnswersArray addObject:[NSNumber numberWithInt:_index+1]];
NSLog(@"rightAnswersArray = %@",_rightAnswersArray);
for (rowNumber = 1; rowNumber < array.count - 1; rowNumber++)
{
cell.userInteractionEnabled = NO;
NSLog(@"%hhd",cell.userInteractionEnabled);
}
}
else
{
cell.contentView.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0];
[_wrongAnswersArray addObject:[NSNumber numberWithInt:_index+1]];
NSLog(@"wrongAnswersArray = %@",_wrongAnswersArray);
[self showComment];
}
}

UPD:用这段代码解决了。

if (rowNumber == [array[array.count - 2] intValue])
{
cell.contentView.backgroundColor = [UIColor colorWithRed:0.0 green:1.0 blue:0.0 alpha:1.0];
[_rightAnswersArray addObject:[NSNumber numberWithInt:_index+1]];
NSLog(@"rightAnswersArray = %@",_rightAnswersArray);
for (rowNumber = 1; rowNumber < array.count - 1; rowNumber++)
self.tableView.allowsSelection = NO;
}

最佳答案

你应该实现 UITableViewDelegate 方法

// Called before the user changes the selection. Return a new indexPath, or nil, to change the proposed selection.
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath;

应该是这样的

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
return _isRightAnswerAlreadySelected ? nil : indexPath;
}

_isRightAnswerAlreadySelected 应该在 (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath 中设置

关于ios - 在 didSelectRowAtIndexPath 之后禁用选择其他单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22180406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com