我有一個UITableView多節。每個部分都有一個部分標題(自定義視圖)是否有一種簡單的方法來檢測某人何時選擇部分標題? (就像didSelectRowAtIndexPath,但爲標題?)uitableviewcontroller部分選擇標題
在此先感謝。
我有一個UITableView多節。每個部分都有一個部分標題(自定義視圖)是否有一種簡單的方法來檢測某人何時選擇部分標題? (就像didSelectRowAtIndexPath,但爲標題?)uitableviewcontroller部分選擇標題
在此先感謝。
不,沒有辦法與UITableViewDelegate
做到這一點。
你可以做的是添加一個按鈕的節頭視圖的大小,並將其添加到視圖。將按鈕的標籤設置爲節索引。 然後只需添加UIViewController
作爲UIControlEventTouchUpInside
的目標。
然後通過查看按鈕的標籤可以看到哪個部分被點擊。
這與@rckoenes答案並不完全不同,但它提供了一種更正統的方式來處理視圖上的事件,而不是使用隱形按鈕。
我寧願加UITapGestureRecognizer我的頭視圖,而不是添加隱形按鈕和調整他們的:
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,看看哪些被感動了。然後做你需要做找出哪些頭是(標籤,數據陣列查找...)
我認爲你必須改變方法: ' - (void)gestureHandler:(UIGestureRecognizer *)gestureRecognizer;'因爲你定義的動作爲'gestureHandler' – fsulser
使用YourView * tappedView =(YourView *)gestureRecognizer.view;看看哪個視圖更加明確 –
下面是我在斯威夫特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")
}
或者你可以返回「viewForHeaderInSection」方法中的頭部大小的UIButton,而不是添加一個視圖並返回它 –