Cómo conectarse a IBOutlet o IBAction en class base

Tengo una class de controller de vista base que henetworkinga de UIViewController y una class henetworkingada de la class viewcontroller base. Ahora tengo un nib cuyo propietario de file es la class henetworkingada, pero todas mis acciones y salidas están en la class base. ¿Es posible incluso conectar la acción \ outlet en el file nib a la de la class base?

Básicamente lo explicaré con el ejemplo :

Defina una class base (llamémosle BaseViewController ) y asígnele un UITableView IBoutlet en el file .h:

 // BaseViewController.h @interface BaseViewController : UIViewController @property (weak, nonatomic) IBOutlet UITableView *tableView; @end 

Defina dos classs de niños (es decir, FirstChildViewController y SecondChildViewController ):

 // FirstChildViewController.h @interface FirstChildViewController : BaseViewController @end // SecondChildViewController.h @interface SecondChildViewController : BaseViewController @end 

Ahora para hacer que las classs (o ambas) de los niños usen el iboutlet de la class base, simplemente arrastre la salida de reference a la definición de propiedad en el file .h de la class base … ¡y eso es todo!

introduzca la descripción de la imagen aquí

Aquí hay un proyecto completo que ilustra esto.

Dos forms de lograr esto:

1)

hazlo programáticamente (es decir, en código)

Primero declara tus puntos de venta en la class base.

y luego asigne sus puntos de venta a través de código en su class henetworkingada.

y

2)

También puede asignar sus puntos de venta y acciones en su file XIB. Xcode conoce los puntos de venta henetworkingados y las acciones de las classs base.

Si la class base está en un marco Swift, entonces a veces Xcode 7 no verá los puntos de venta, incluso si la class base y sus puntos de venta son públicos. En este caso, la solución es la siguiente:

  1. En IB configure el control para usar la class base
  2. Conecte los sockets
  3. En IB establece el control para usar la class derivada

IB mostrará "!" al lado de los puntos de venta como si estuvieran desaparecidos, pero no habrá errores en el time de ejecución.

¡Si alguien tiene una mejor solución, hágamelo saber!