Cómo get una reference al controller de vista de tabla desde la vista de tabla personalizada Clase de celda

Tengo celda de vista de tabla personalizada y he creado una class personalizada. ¿Cómo puedo get una reference al controller de vista de tabla de la celda?

Tengo esta class de celda tableview personalizada. En esto tengo un button que está conectado con un evento de toque. De golpe, obtengo el evento bien, pero estoy buscando un control sobre el controller de vista de tabla para que pueda mostrar la hoja de acción en la parte superior de la vista de tabla.

@interface MTPurchasedCartItemCell : UITableViewCell - (IBAction)onShareTap:(id)sender; @end 

La forma en que haría esto sería utilizar un controller de events de bloque. En su class MTPurchasedCartItemCell agregue una propiedad en el file de encabezado como tal:

 @property (nonatomic, copy) void (^tapHandler)(id sender); 

Y en el file de implementación puede hacer esto:

 - (IBAction)onShareTap:(id)sender { if (self.tapHandler) { tapHandler(sender); } } 

Y, finalmente, en su class de controller, haga algo como esto en su cellForRowAtIndexPath: ::

 ... cell.tapHandler = ^(id sender) { // do something } ... 

También podría considerar agregar una @property pública para el button a la celda personalizada.

Para hacerlo, agregue la siguiente línea al file de encabezado de su class de celda personalizada:

 @property (weak, nonatomic) IBOutlet UIButton *myButton; 

Eso es si estás creando el button en Interface Builder. Si está creando el button en código, agregue esta línea en su lugar:

 @property (nonatomic) UIButton *myButton; 

Luego, al inicializar o configurar la celda desde el controller de vista de tabla, ahora tiene una reference a myButton y puede agregar una acción a él con el controller de vista de tabla como destino.

Luego, en el método de acción, puede get la celda desde el button. La respuesta a Objective-C: ¿Cómo generar un NSInteger único de dos NSIntegers? explica cómo

He hecho algo muy similar que obtiene la reference de la tabla de una celda personalizada utilizando un evento de button.

Código:

 -(IBAction)onShareTap:(UIButton *)sender { // i've used a button as input.. UIButton *senderButton = (UIButton *)sender; UITableViewCell *buttonCell = (UITableViewCell *)senderButton.superview.superview.superview; UITableView* table = (UITableView *)[buttonCell superview]; NSLog(@"Table: %@", table); }