Lamentablemente, ese método no se llama a menos que se toque el tipo de botón interno que se proporciona cuando usa uno de los tipos predefinidos. Para usar el suyo, tendrá que crear su accesorio como un botón u otra subclase de UIControl (recomendaría un botón usando -buttonWithType:UIButtonTypeCustom
y configurando la imagen del botón, en lugar de usar un UIImageView).
Aquí hay algunas cosas que uso en Outpost, que personaliza lo suficiente de los widgets estándar (solo un poco, para que coincida con nuestro color verde azulado) que terminé haciendo mi propia subclase intermediaria UITableViewController para contener el código de utilidad para todas las demás vistas de tabla para usar (ahora subclase OPTableViewController).
En primer lugar, esta función devuelve un nuevo botón de divulgación de detalles utilizando nuestro gráfico personalizado:
- (UIButton *) makeDetailDisclosureButton
{
UIButton * button = [UIButton outpostDetailDisclosureButton];
[button addTarget: self
action: @selector(accessoryButtonTapped:withEvent:)
forControlEvents: UIControlEventTouchUpInside];
return ( button );
}
El botón llamará a esta rutina cuando termine, que luego alimenta la rutina estándar UITableViewDelegate para botones accesorios:
- (void) accessoryButtonTapped: (UIControl *) button withEvent: (UIEvent *) event
{
NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint: [[[event touchesForView: button] anyObject] locationInView: self.tableView]];
if ( indexPath == nil )
return;
[self.tableView.delegate tableView: self.tableView accessoryButtonTappedForRowWithIndexPath: indexPath];
}
Esta función localiza la fila al obtener la ubicación en la vista de tabla de un toque del evento proporcionado por el botón y solicita a la vista de tabla la ruta de índice de la fila en ese punto.