Ios UITableView项目高亮显示,然后取消选择-Swift

Ios UITableView项目高亮显示,然后取消选择-Swift,ios,swift,uitableview,Ios,Swift,Uitableview,我有一个包含3个嵌套UIView的UIView。它们的总宽度是屏幕的300%。(各100%)。 我正在更改AutoLayout优先级,以便通过从导航栏单击按钮将所需的显示在屏幕上,而将其他显示在屏幕外 |uiview1 | | uiview2 | | uiview3| uiview3有一个UITableView。它可以填充、完美滚动,但轻触一个项目时,该项目会高亮显示一秒钟,然后释放。未调用函数“didSelectRowAt” 我已尝试禁用此VC上注册的所有其他手势。单击也会被检测到,但不会持续

我有一个包含3个嵌套UIView的UIView。它们的总宽度是屏幕的300%。(各100%)。 我正在更改AutoLayout优先级,以便通过从导航栏单击按钮将所需的显示在屏幕上,而将其他显示在屏幕外

|uiview1 | | uiview2 | | uiview3|

uiview3有一个UITableView。它可以填充、完美滚动,但轻触一个项目时,该项目会高亮显示一秒钟,然后释放。未调用函数“didSelectRowAt”

我已尝试禁用此VC上注册的所有其他手势。单击也会被检测到,但不会持续,并会立即取消选择

//globally in VC
@IBOutlet weak var salamsTable: UITableView!

//in viewDidLoad
self.salamsTable.delegate = self
self.salamsTable.dataSource = self

//delegate functions
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    print (indexPath.row)  // this never gets called
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{
    return self.allSalam.count      //works perfectly
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{
    var cell = self.msgsTable.dequeueReusableCell(withIdentifier: "messages") as! MessageCell
    return cell // works perfectly
}

视觉演示:


不是解决方案,而是替代方案。事情以另一种方式解决了。正如您在问题中附带的演示GIF中所看到的,单元格被正确高亮显示。因此,我添加了delegate方法didHighlightRowAt,它起到了很好的效果。

你能发布一些代码吗?请在提问时发布相关代码。出现问题的原因有很多,但由于没有代码进行评估,很难缩小可能性。我猜这与自动布局更改有关。您不想使用UINavigationController或UIPageViewController来组织和显示这三个视图控制器有什么原因吗?您愿意分享您的演示吗?我会解决这个问题并给你一个答案你是否覆盖了你的代表应该是谁?看起来您在情节提要中设置了代理,然后在代码中再次设置了代理
self.salamsTable.delegate=self-self.salamsTable.dataSource=self
我建议删除这两行,因为它们是多余的。