uitableviewcontrollerselect节的标题

我有一个UITableView与多个部分。 每个部分有一个部分标题(自定义视图)是否有一个简单的方法来检测何时有人select部分标题? (就像didSelectRowAtIndexPath,但为标题?)

提前致谢。

不,没有办法与UITableViewDelegate做到这一点。

你可以做的是添加一个button的大小的节标题视图,并将其添加到视图。 将button的标签设置为部分索引。 然后只需添加UIViewController作为UIControlEventTouchUpInside的目标。

然后通过查看button的标签,您可以看到哪个部分被点击。

这与@rckoenes的答案没有根本的区别,但它确实提供了一种更正统的处理视图事件的方法,而不是使用隐形button。

我宁愿添加一个UITapGestureRecognizer到我的标题视图,而不是添加不可见的button,并调整它们的大小:

 UITapGestureRecognizer *singleTapRecogniser = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)] autorelease]; [singleTapRecogniser setDelegate:self]; singleTapRecogniser.numberOfTouchesRequired = 1; singleTapRecogniser.numberOfTapsRequired = 1; [yourHeaderView addGestureRecognizer:singleTapRecogniser]; 

接着:

 - (void) handleGesture:(UIGestureRecognizer *)gestureRecognizer; 

您可以使用gesture.view来查看被触摸的内容。 然后做任何你需要做的事来找出它是哪个头(标签,数据数组查找…)

这里是Swift 2中对我有用的东西:

 override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let v = UITableViewHeaderFooterView() v.textLabel?.text = "Header Text" let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap)) tapRecognizer.delegate = self tapRecognizer.numberOfTapsRequired = 1 tapRecognizer.numberOfTouchesRequired = 1 v.addGestureRecognizer(tapRecognizer) return v } func handleTap(gestureRecognizer: UIGestureRecognizer) { print("Tapped") }