UITableView didSelectRowAtIndexPath:第一次点击时未被调用
我对UITableView didSelectRowAtIndexPath:第一次点击时未被调用,uitableview,cocoa-touch,uikit,didselectrowatindexpath,Uitableview,Cocoa Touch,Uikit,Didselectrowatindexpath,我对UITableView的didSelectRowAtIndexPath有问题 我的表格是这样设置的,当我选择行时,它会初始化一个新的视图控制器并按下它 我第一次点击表中的任何一行时,都不会调用该方法。一旦我选择了另一行,它就开始正常工作 我通过在didselectrowatinexpath上设置断点来验证这一点。向方法添加NSLog时,我看到当我选择最后推送新视图控制器的第二行时,控制台中同时出现两条日志语句 有什么建议吗?有没有可能是您无意中键入了DIDDeselevationIndexP
UITableView的didSelectRowAtIndexPath
有问题
我的表格是这样设置的,当我选择行时,它会初始化一个新的视图控制器并按下它
我第一次点击表中的任何一行时,都不会调用该方法。一旦我选择了另一行,它就开始正常工作
我通过在didselectrowatinexpath
上设置断点来验证这一点。向方法添加NSLog
时,我看到当我选择最后推送新视图控制器的第二行时,控制台中同时出现两条日志语句
有什么建议吗?有没有可能是您无意中键入了DIDDeselevationIndexPath?还要检查xib文件中表视图的selection属性。根据需要使用“单选”或“多选”。我甚至对发布这个答案进行了辩论,因为我认为星星的排列是为了让它自己显现出来
我有一个变化的这个问题,并已检查了其他解决方案。在我的表格视图中,它不会在第一次点击时处理表格的最后一行。它高亮显示它,但未调用didSelectRowAtIndexPath
。所有其他行都可以正常工作。但是,如果我打开tableview反弹,那么它似乎可以解决问题(但是你必须处理tableview反弹)。我遇到了以下问题:
- 在行中第一次点击->无效果,无选择,从不
- 第二次点击并跟随->正确的选择行为,始终
在我的例子中,我的错误是检查Interface Builder中的Show Selection on Touch
。您可以在IB中取消选中它:
希望这能帮助别人检查你是否在课堂上设置了手势识别器。删除手势对我很有效。SWIFT 2
确保将此设置为true:
self.tableView.allowssection=true
将其放在右上方,在显示该问题的单元格的viewDidLoad()
之后和super.viewDidLoad()
UITableViewCellSelectionStyleNone之前
(第9页)
我最后打电话来了
[tableView deselectRowAtIndexPath:indexPath animated:NO];
第一件事
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
这不一样,但已经足够好了。
让我想知道ios10带来了什么样的桌子。SWIFT 3
如果您在非UITableViewController
的类中使用Swift 3,并且使用的是UITableViewDelegate
,则可能需要使用方法标题:
@objc(tableView:didSelectRowAtIndexPath:) func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){...}
虽然我刚刚将我的项目迁移到Swift 3,但这对我来说很有效。这是相当新的,因此可能会在以后修复。didSelectRowAt
函数在我的应用程序中未在第一次或第二次点击中调用。。。
我试图解决这个问题,却找不到任何解决办法。但突然我被认出,我正在使用view.animation颜色更改<代码>委托
方法在动画持续时未调用SWIFT 3
其他答案在我的情况下都不起作用,但解决我问题的是:
tableView.delaysContentTouches=false
如果您在类中设置了任何UITapgestureRecognitor,则可以在didSelectRowAtIndexPath中添加此行:
[tableView deselectRowAtIndexPath:indexPath animated:NO];
这对我很有用。当您在tableView中使用手势识别器时,也会出现此问题。在这种情况下,您不需要删除它们,您只需确保您的手势属性cancelsTouchesInView=false
这是一个布尔值,影响识别手势时是否将触摸传递到视图 在我的例子中,我有一个带有手势识别器的UITableView节头。点击标题时,它应该在该部分插入几行,并设置插入动画(如展开/折叠部分)。
第一次展开并点击时,没有触发didSelectRow委托方法。对于进一步的攻丝和展开/折叠操作,它按预期工作
根据我的回答,我将cancelsTouchesInView设置为false,这样就解决了问题。
t手势识别器?.cancelsTouchesInView=falseSwift 4.2
在属性检查器中禁用“延迟触地”解决了该问题。
之后,咔嗒声顺畅,并立即触发
对我有效的方法是开始键入“didSelect…”,然后让autocorrect填充其余部分。显然,我的语法有些细节是不可靠的。正如其他人所说,使用IDE 我的tableView(swift 4.2)也有同样的问题,可以通过tableView上的allowsMultipleSelection
属性来解决
如果allowsMultipleSelection
设置为true
,则表视图选择机制将发生变化,通过选择每个单元格,第一次调用tableView DidSelectRowatineXpath:
,第二次选择同一单元格,将调用tableView DidSelectRowatineXpath:
打电话来
这意味着,如果一个单元格被点击的次数是奇数(1、3、5,…),那么将始终调用tableView didSelectRowAtIndexPath:
,如果一个单元格被点击的次数是偶数(2、4、6,…),那么将始终调用tableView didSelectRowAtIndexPath:
这使得tableView didSelectRowAtIndexPath:
函数在同一单元格的第三次选择中被调用,因此结果是双击调用didSelectRowAtIndexPath:
强>
如果希望对单元格的每个选择调用tableView-didSelectRowAtIndexPath:
,则必须将tableView-multipleselection设置为false
,tableView.allowsMultipleSelection=false
这样,每次点击单元格时,tableView都会选择RowatineXpath:
wil