que life container ios5 uiviewcontroller uistoryboard

ios5 - life - viewcontroller swift



Método de inicio personalizado de viewController con guión gráfico (2)

Tengo problemas para anular el método de inicialización de mi CustomViewController que está diseñado en mi Storyboard.

Ahora estoy haciendo (en mi mainViewController):

self.customViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomVC"]; self.customViewController.myObject = someObject;

y tengo en viewDidLoad (CustomViewController)

[self.label setText:self.myObject.someString];

Esto funciona bien.

Pero, ¿es la forma correcta? ¿Debo agregar un método de inicio personalizado (o anularlo) a mi CustomViewController? Como initWithObject:? No sé cómo llamar a mi método de inicio personalizado en lugar de UIStoryboard instantiateViewControllerWithIdentifier: y no estoy recibiendo llamadas a init ni initWithNibName .

Tal vez debería usar: - (id)initWithCoder:(NSCoder *)decoder .

¡Por favor, dame un consejo!

¡Gracias!


Como otra "solución alternativa" para este problema, puede utilizar la delegación. Cree un protocolo que actúe como fuente de datos para su subclase UIViewController desde el guión gráfico. Cumpla con este protocolo de origen de datos, implementelo y utilícelo justo después de cargar su subclase UIViewController:

required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) //invoke your data source here }

Lo sé ... tampoco me gusta esto pero ...;)


El inicializador designado para los controladores de vista en los guiones gráficos es -initWithCoder: Como la mayoría de los controladores de vista de un guión gráfico se crean a través de segmentos, generalmente se ve el estado establecido durante -prepareForSegue:sender:

Si está creando una instancia de un controlador de vista directamente desde el guión gráfico como en el ejemplo que proporcionó, entonces el patrón que seleccionó es el adecuado.