gpt4 book ai didi

ios - 提前选中复选框时,不会调用 didDeselectRowAtIndexPath

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:54:27 25 4
gpt4 key购买 nike

我正在使用带复选框的 UITableView。在我的 cellForRowAtIndexPath 方法中,我设置了如下选定的几个单元格,

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];


if(tableView == self.sideBarTbl){
cell.textLabel.text = [titleArray objectAtIndex:indexPath.row];
cell.tag = indexPath.row;
if(indexPath.row == 0){
[cell setSelected:true];
}else if(indexPath.row == 1){
[cell setSelected:true];
}else {
[cell setSelected:false];
}
}

简而言之,如果行是 0,1,那么我会检查 UITableView 的复选框。

当用户点击第 0 行或第 1 行时,它应该调用 didDeselectRowAtIndexPath,因为第 0 行和第 1 行的复选标记已经被选中。但是,它总是调用 didSelectRowAtIndexPath。无论复选框是否被选中,它总是调用didSelectRowAtIndexPath。如何让它在选中复选框时调用 didDeselectRowAtIndexPath 并在未选中复选框时调用 didSelectRowAtIndexPath

最佳答案

didDeselectRowAtIndexPath 方法只会被调用之前被触摸选择的单元格。它与单元格的 selected 属性无关。如果你想对取消选择的单元格做一些事情,只需使用 didSelectRowAtIndexPath 方法在 NSMutableArray 中手动记录选择。忘记 didDeselectRowAtIndexPath。供引用:UITableView cell on double click should go to previous state

还有一个 Objective-C 的例子:

@interface SomeViewController : UIViewController<UITableViewDelegate> {
NSMutableArray *selectedIndexPaths;
}

@implementation SomeViewController
//......
- (void)viewDidLoad {
[super viewDidLoad];
selectedIndexPaths = [NSMutableArray array];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ([selectedIndexPaths containsObject:indexPath]) {
[selectedIndexPaths removeObject:indexPath];
//Do something when deselecting.
}
else{
[selectedIndexPaths addObject:indexPath];
//Do something when selecting.
}
}
//......
@end

如果选择是单一且独占的,如单选框,只需使用单个变量 NSIndexPath *selectedIndexPath; 将选择记录在 didSelectRowAtIndexPath 中,在处理上一个取消选择过程后选定的单元格。

关于ios - 提前选中复选框时,不会调用 didDeselectRowAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44340983/

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