UITableView项突出显示,然后取消选择 - Swift

时间:2017-10-09 21:42:29

标签: ios swift uitableview

我有一个带有3个嵌套UIViews的UIView。它们的总宽度是屏幕的300%。 (每个100%)。 我正在更改AutoLayout优先级,以便在屏幕上显示所需内容,其他人在屏幕上点击NavBar中的按钮。

| 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
}

salamsTable is the subject UITableView

视觉演示:

enter image description here

1 个答案:

答案 0 :(得分:0)

不是解决方案,而是替代方案。事情以另一种方式解决了。正如您在问题中附带的Demo GIF中所看到的,正在正确突出显示单元格。所以我添加了委托方法didHighlightRowAt,它就像一个魅力。