6

Tengo una funcionalidad común a la que necesito acceder desde todas las pantallas de mi aplicación: un elemento del botón de la barra derecha y la acción asociada.¿Puedo crear un UITableViewController que herede de una subclase personalizada de UIViewController?

Para no repetir el código, me gustaría configurar esto en un UIViewController personalizado y tener todos mis controladores de vista heredados de él.

- (void)viewDidLoad { 
    UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(lightsCamera)]; 
    self.navigationItem.rightBarButtonItem = rightBarButton; 
} 

- (void)lightsCamera { 
    … 
} 

Sin embargo, tengo una serie de UITableViewControllers y sin embargo me gustaría saber si es posible para ellos heredan la funcionalidad también?

Respuesta

6

Es bastante trivial recrear su propio UITableViewController de su subclase personalizada UIViewController.

El controlador debe tener una propiedad UITableView, que también se establece en su propiedad view, establece las máscaras de cambio de tamaño adecuado, establecido a sí mismo como delegado y fuente de datos de la tabla, y recordar a parpadear los indicadores de la barra de desplazamiento en -viewDidAppear: y has más o menos lo tengo.

Más here.

+0

¿Sabes si esta es la única manera de lograr lo que estoy buscando? Si es así, voy a deshacerme de 'UITableViewController' y hacer mi propia sugerencia. – prendio2

+1

Reemplazar los métodos en una Categoría no es una muy buena idea, por lo que esta será probablemente su mejor opción. Alternativamente, podría simplemente subclasificar 'UITableViewController' y agregar su funcionalidad allí, y luego tener el resto de sus controladores de tabla personalizados heredados de él. – jbrennan

+0

Esa es precisamente la respuesta que estaba buscando :) ¡Hiciste mi día! – sachadso

2

Si no agrega ningún atributo nuevo al controlador de vista, puede implementar los dos métodos en una categoría en UIViewController y todas las subclases lo heredarán de forma predeterminada.

+0

¿Quiere decir una categoría en la vista o en el controlador de vista? ¿Puedo acceder al 'navigationItem' de un controlador de vista desde su vista? – prendio2

+0

Creo que quiso decir UIViewController. Ahí es donde pertenece esta funcionalidad. No es necesario involucrar a UIView. – jlehr

+0

Sí, lo siento UIViewController. Voy a editar – TechZen

Cuestiones relacionadas