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