我试图在迅速使用扩张的tableview。 所以我加入的Gesture在tableview中,以头,但并不认识。 请指导我。 刚刚越过检查我的编码。
我的编码如下:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let vvv = tableView.headerViewForSection(section)
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
vvv?.addGestureRecognizer(tap)
return vvv
}
func handleTap(gestureRecognizer: UITapGestureRecognizer)
{
if(gestureRecognizer.state == .Ended)
{
println("SECTION PRESSED") //NOT ENTERING TO THIS BLOCK
}
}
在斯威夫特4您可以将UITapGestureRecognizer添加到头的观点:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView()
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(headerTap))
headerView.addGestureRecognizer(tapRecognizer)
return headerView
}
@objc func headerTap() {
// Tap action
}
我就是这么做的。
首先,做一个UITableViewCell类,以“headerCellSection”变量(或任何你想将它命名为此事)。
import UIKit
class HeaderCellTableViewCell: UITableViewCell {
var headerCellSection:Int?
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
添加单元格“viewForHeaderInSection”:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCellWithIdentifier("headerCell") as! HeaderCellTableViewCell
return headerCell
}
发送小区的部分先前声明的变量和点击手势识别器添加到该小区。 代码应该是这个样子:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCellWithIdentifier("headerCell") as! HeaderCellTableViewCell
// Send section
headerCell.headerCellSection = section
// Add gesture
let headerTapGesture = UITapGestureRecognizer()
headerTapGesture.addTarget(self, action: "myAction:")
headerCell.addGestureRecognizer(headerTapGesture)
return headerCell
}
然后添加动作。 在操作,你可以访问具有点击手势目标的看法。 在那里,你可以访问之旅“headerCellSection”值,瞧!
func myAction (sender: UITapGestureRecognizer) {
// Get the view
let senderView = sender.view as! HeaderCellTableViewCell
// Get the section
let section = senderView.headerCellSection
print(section)
}
我加入了这样做是UITapGestureRecognizer
的contentView
的headerView的。 例:
headerCell.contentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(headerTapped)))
我知道这是一个有点老问题给予回答。 但没有被接受的答案,我会给另一个简单的解决方案。
我读了原来的问题后,我以为笔者不想自定义创建节头。 这就是为什么他试图用下面的代码。
let vvv = tableView.headerViewForSection(section)
但我敢肯定你会得到一个空值在上面的代码片断VVV。 如果用户想要访问的默认视图,他可以如下做到这一点。
tableView.register(UITableViewHeaderFooterView.self, forHeaderFooterViewReuseIdentifier: sectionHeaderIdentifier)
以上报名,我没有在我的viewDidLoad()函数。 然后使用下面的代码
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let sectionView: UITableViewHeaderFooterView = tableView.dequeueReusableHeaderFooterView(withIdentifier: sectionHeaderIdentifier)!
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(sectionHeaderTapped))
sectionView.addGestureRecognizer(tapGesture)
return sectionView
}
上述功能将创建启用了双击手势属性表格节头的默认视图。