Tengo una clase de controlador de vista base que hereda de UIViewController
y una clase heredada de la clase base viewcontroller
. Ahora tengo una semilla cuyo propietario del archivo es la clase heredada, pero todas mis acciones y puntos de venta están en la clase base. ¿Es posible conectar la acción \ salida en el archivo de punta a la de la clase base?cómo conectarse a IBOutlet o IBAction en la clase base
Respuesta
Voy a ser básicamente explico por example:
definir una clase base (llamémoslo BaseViewController
) y asignarle un UITableView
IBOutlet en el archivo .h:
// BaseViewController.h
@interface BaseViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
definir dos hijos clases (es decir FirstChildViewController
y SecondChildViewController
):
// FirstChildViewController.h
@interface FirstChildViewController : BaseViewController
@end
// SecondChildViewController.h
@interface SecondChildViewController : BaseViewController
@end
ahora para hacer uno (o ambos) de la childre n las clases usan el iboutlet de la clase base, simplemente arrastre el punto de referencia a la definición de propiedad en el archivo .h de la clase base ... ¡y listo!
here es un proyecto completo que ilustra esto.
hmm ... esto no parece funcionar para swift –
dos maneras de lograr esto:
1)
lo hacen mediante programación (es decir, en el código)
Primera declarar sus puntos de venta en la clase base.
y luego asigne sus puntos de venta a través de código en su clase heredada.
y
2)
También puede asignar sus puntos de venta y acciones en su archivo XI ter. Xcode sabe acerca de salidas y acciones heredadas de clases base.
Si la clase base está en un marco Swift, a veces Xcode 7 no verá las salidas, incluso si la clase base y sus salidas son públicas. En este caso la solución es la siguiente:
- En IB ajuste el control para usar la clase base
- Conectar las salidas
- En IB establecer el control para usar la clase derivada
IB mostrará "!" junto a las salidas como si faltaran, pero no habrá errores en el tiempo de ejecución.
Si alguien tiene una mejor solución, ¡házmelo saber!
¿Puede explicarme un poco más detalladamente cómo hacer esto? – c0d3Junk13
@ c0d3Junk13: abrir Storyboard. Mostrar inspector de identidad. Seleccionar control Establece su clase a la clase base. Conectar tomacorrientes.Seleccione el mismo control y establezca la clase a la clase derivada. Ignora las advertencias. – phatmann
hmm .. esto parece hackish .. ¿está permitido? o es algo que se romperá más tarde en –
- 1. IBOutlet e IBAction
- 2. ¿Qué significa IB en IBAction, IBOutlet, etc.?
- 3. ¿Resumen de todas las conexiones IBOutlet, IBAction en un proyecto?
- 4. Remitente de transmisión a IBAction como identificación o clase específica
- 5. conectarse a la base de Perl
- 6. Cómo conectarse a la base de datos sqlite con contraseña
- 7. Conectarse a la base de datos MySQL con RMySQL
- 8. Cómo conectarse a postgresql usando la url
- 9. Conectarse a la base de datos Oracle con C++
- 10. débil o fuerte para IBOutlet y otros
- 11. Base abstracta o clase auxiliar
- 12. Conectarse a una base de datos SQL externa en C#
- 13. ¿Cómo conectarse a la base de datos local a través del sitio web?
- 14. Convertir a clase base
- 15. ¿Cómo conectarse a la base de datos en memoria de Play Framework utilizando JDBC?
- 16. ¿Cómo acceder a la base (super) clase en Delphi?
- 17. DBI: Conectarse a una base de datos diferente si la primera base de datos no existe
- 18. Cómo conectarse a una base de datos remota desde la aplicación de Iphone nativa
- 19. ¿Cómo conectarse a una base de datos que requiere contraseña sin exponer la contraseña?
- 20. ¿Cómo conectarse a mysql usando java?
- 21. ¿Cómo conectarse a gtalk en java?
- 22. EXC_BAD_ACCESS con IBACTION
- 23. Conectarse a la base de datos Sharepoint a través de PHP
- 24. Pase diferentes parámetros a un IBAction
- 25. Java; clase base de conversión a la clase derivada
- 26. Cómo conectarse a la base de datos Oracle 11g de forma remota
- 27. ¿Cómo se usa la inducción para conectarse a una base de datos SQLite local?
- 28. C++ clase base de fundición a la clase derivada lío
- 29. Manejando evento Touch en UILabel y conectándolo a un IBAction
- 30. Convertir clase base a clase derivada
Sí. ¿Están todos tus archivos en el mismo proyecto en Xcode? – wbyoung