仅在按下uitableviecell时显示视图

时间:2015-12-17 07:41:08

标签: ios swift uitableview cocoa-touch

我有UIViewController UITableView和覆盖视图。在didSelectRowAtIndexPath中显示了视图,但我想在用户放开屏幕后立即隐藏它。因此,只有当用户按下一个单元格并且在他放开后立即隐藏时,才会显示该视图。 我尝试使用touchesEnded,但我无法使用它。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    self.colorView.hidden = false
    self.colorView.backgroundColor = colors[indexPath.row]

}

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以在touchesEnded上使用TableViewCell方法检测用户何时触摸此单元格。然后使用委托将此活动发送到您的viewcontroller 例如:

YourTableViewCell.swift

    protocol YourTableViewCellDelegate: class {
        func endTouch(indexPath: NSIndexPath)
    }


    class YourTableViewCell: UITableViewCell {
        weak var delegate: YourTableViewCellDelegate?
        var indexPath: NSIndexPath

       // Add Your Other method
        func bind(index: NSIndexPath) {
             self.indexPath = index
        }

        override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
            self.delegate?.endTouch(self.indexPath)
        }
    }

YourViewController.swift

class YourViewController: UIViewController, YourTableViewCellDelegate {

    // Add Your Other method

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        ...
            cell.delegate = self
            cell.bind(indexPath)
    }

    // MARK: - YourTableViewCellDelegate
    func endTouch(indexPath: NSIndexPath) {
        self.colorView.hidden = true
    }
}

答案 1 :(得分:0)

您应该从触摸结束覆盖中调用colorView.hidden。

override func touchesEnded(touches: Set<NSObject>, withEvent event: UIEvent) {

        self.colorView.hidden = true
}