我有UIViewController
UITableView
和覆盖视图。在didSelectRowAtIndexPath
中显示了视图,但我想在用户放开屏幕后立即隐藏它。因此,只有当用户按下一个单元格并且在他放开后立即隐藏时,才会显示该视图。
我尝试使用touchesEnded
,但我无法使用它。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.colorView.hidden = false
self.colorView.backgroundColor = colors[indexPath.row]
}
有什么建议吗?
答案 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
}