Pregunta

Mi aplicación basada en tabBarController tiene varias pestañas. Cada uno tiene una clase de viewController personalizada, la única diferencia es la forma en que se inicializa la instancia. ¿Hay alguna manera de hacer que el constructor de interfaces envíe los parámetros de inicio personalizados de las distintas pestañas?

Actualmente estoy haciendo la inicialización en viewWillAppear, pero por un montón de razones tendría sentido hacerlo en IB en lugar de hacerlo en el código.

¿Alguna sugerencia?

gracias, Kelso

¿Fue útil?

Solución

Interface Builder crea un archivo de objetos que no está archivado cuando se ejecuta el programa. Realmente no puedes decirle a IB que llame a métodos particulares.

Si necesita inicializar antes de llamar a viewWillAppear: , puede hacerlo en awakeFromNib , que se garantiza que se llamará después de que se hayan cargado todos los objetos y todos los puntos de venta Se han conectado a sus objetivos.

Si desea realizar la inicialización incluso antes, puede hacerlo anulando initWithCoder: (consulte el protocolo NSCoding para obtener documentación). No sé si está documentado en algún lugar, pero esa es la inicialización designada para los objetos que se descodifican de un archivo.

En todo lo anterior, no podrá recibir parámetros, pero en el código debería poder acceder a lo que necesite con un uso juicioso de variables globales. También puede usar [[UIApplication sharedApplication] delegate] para obtener acceso a su objeto de delegado de aplicación.

Otros consejos

No creo que haya ninguna manera de cambiar los métodos que son llamados por el tiempo de ejecución de IB cuando se carga su punta. Si describió lo que intentaba lograr (es decir, por qué hacer la configuración en viewDidAppear no funciona para usted), podría obtener una sugerencia de una mejor manera de manejar su inicialización.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top