uitableviewcontroller seleccionar encabezado para la sección

Tengo una UITableView con varias secciones. Cada sección tiene un encabezado de sección (una vista personalizada) ¿hay una manera fácil de detectar cuándo alguien selecciona el encabezado de sección? (Al igual que didSelectRowAtIndexPath, ¿pero para el encabezado?)

Gracias por adelantado.

No hay forma de hacerlo con UITableViewDelegate .

Lo que puede hacer es agregar un button del tamaño de la vista del encabezado de sección y agregarlo a la vista. Establezca la label del button en el índice de la sección. A continuación, simplemente agregue UIViewController como destino para UIControlEventTouchUpInside .

Luego, al mirar la label del button, puede ver qué sección hace clic.

Esto no es radicalmente diferente a la respuesta de @rckoenes, pero proporciona una manera más ortodoxa de manejar events en vistas en lugar de usar botones invisibles.

Prefiero agregar un UITapGestureRecognizer a mi vista de encabezado en lugar de agregar botones invisibles y networkingimensionarlos:

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

y entonces:

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

Puede usar gesture.view para ver cuál fue tocado. Luego, haga lo que necesite para averiguar qué encabezado era (tags, búsqueda de matriz de datos …)

Esto es lo que funcionó para mí en 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.numberOfTapsRequinetworking = 1 tapRecognizer.numberOfTouchesRequinetworking = 1 v.addGestureRecognizer(tapRecognizer) return v } func handleTap(gestureRecognizer: UIGestureRecognizer) { print("Tapped") }