- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用带复选框的 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/
didSelectRowAtIndexPath 被调用,但 didDeselectRowAtIndexPath 不叫。我不知道为什么。我在网上搜索。很多类似的问题,但我没有找到答案。 这是我的桌面 V
我使用了一个显示时区选项的表格。我使用复选标记来显示当前选择的是哪一个。创建表后,我选中保存为用户时区的单元格。 override func tableView(tableView: UITableV
我在弹出窗口的 ScrollView 中有一个表格 View 。当显示 View 时,tableview 中的底部单元格对用户不可见。如果我选择所有单元格然后取消选择第一个单元格,那么 View 外的
我在 UIViewController 中有一个 UITableView 并且 UIViewController 是 的 delegate UITableView。在我的表格 View 中,我正在输出
这个问题在这里已经有了答案: Table view didSelectRowAtIndexPath, only works after selecting second click (1 个回答)
我已经在包含多项选择的 UITableView 中实现了didDeselectRowAtIndexPath 方法。 出于某种原因,didDeselectRowAtIndexPath 未被委托(dele
我正在使用 didDeselectRowAtIndexPath 浏览不同的 Storyboard,例如: func tableView(tableView: UITableView, didSelec
我在 UITableView 上手动调用方法 [tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableV
我正在使用带复选框的 UITableView。在我的 cellForRowAtIndexPath 方法中,我设置了如下选定的几个单元格, UITableViewCell *cell = [tableV
我试图改变我已添加到 guideViewCell 的 UIView 的颜色,而不是默认的 selectionStyle(其中背景 View 会更改颜色)。但是,当取消选择单元格或按下另一个单元格时,它
我有一个 UITableView,当 isEditing=YES 显示带有标准 iOS 选择圆形“复选框”的单元格(见下图)。其中一些已通过 CoreData“添加书签”。 tableView:wil
这个问题在这里已经有了答案: When I select a UITableViewCell, my view controller label is an action behind (1 个回答
我是 iOS 新手,在选择和取消选择表格 View 单元格时遇到问题。对于取消选择,我使用了 didDeSelectRowAtIndexPath 但它没有被调用 我的代码是这样的 - (UITable
如何使用 tableView:didDeselectRowAtIndexPath: 触发 textFieldShouldBeginEditing: ? 或者我还有什么其他选择?我确实考虑过使用 tab
我的 TableView 在取消选择而不是 onSelect 时返回行,所以当我选择第一个单元格时,didDeselectRowAtIndexPath 不返回任何内容,但是当我选择其他单元格时,我得到
在我的应用程序中,我使用 UITableview。在该委托(delegate)方法中 didselectrow 如果我做了任何操作就不会发生。 例如我在表格 View 中有 3 行 如果我选择 1 行
我正在使用 Split View Controller 并希望将多个 TableView 添加到主视图 Controller 。 因此,我可以利用(我相信)您只能从 UITableViewContro
这是代码: func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { l
我有一个 UITableView有四个单元格,处于单选模式。首次加载 View 时,我使用 -selectRowAtIndexPath:animated:scrollPosition: 以编程方式选择
我有一个带有自定义单元格的 TableView 。选择一行后,会发生一些事情。一旦取消选择该行,就会发生其他一些事情。 一切正常,但有一个错误我无法修复。我可以点击我想要的每一行并且“什么都没有”发生
我是一名优秀的程序员,十分优秀!