Soy nuevo en iOS5 y storyboard.iOS5: Confusión con loadview e init y variables de instancia
Noté que si declaro variables de instancia dentro de mi viewcontroller .h file y establezco los valores dentro de mi archivo init of .m de mi viewcontroller, cuando la vista del viewcontroller se muestra, mis variables de instancia muestran null dentro de viewDidLoad . Para que pueda obtener mis variables, tendré que hacer [self init] dentro de viewDidLoad. Mis preguntas son:
@interface tableViewController : UITableViewController
{
NSMutableArray *myvariable;
}
@end
@implementation tableViewController
-(id)init
{
myvariable = [[NSMutableArray alloc]initWithObjects:@"Hi2",@"Yo2",@"whatsup2", nil];
}
- (void)viewDidLoad
{
NSLog(@"%@",myvariable); // DISPLAYS NULL
[super viewDidLoad];
}
- ¿Por qué no es mi variables disponibles en viewDidLoad cuando declaré e implementé en mi .hy archivos .m?
- Si ese es el caso, ¿viewDidLoad o viewWillAppear son los lugares comunes para cargar los datos para viewcontroller?
- Parece que incluso cuando crea una instancia de un controlador de visualización y se llama a la función init, viewDidLoad no tiene necesariamente las variables que se mostrarán.
- ¿Dónde está el lugar/los métodos correctos para cargar el modelo (datos) para mi controlador de visualización?
Gracias de antemano
HI Firoze, Gracias por la respuesta. initWithCoder es definitivamente la función correcta para llamar, ¿Todo viewcontroller siempre llama a initWithCoder. ¿Cuál es la diferencia entre poner mi instanciación variable en initWithCoder, initWithNibName e init?¿Eso significa que cuando hago SomeViewController * test = [[SomeViewController alloc] init] ;, también se está llamando al initWithCoder? – sonoluminescence
'awakeFromNib' es un lugar mejor para tal inicialización IMO. Para responder a la pregunta, si crea un objeto a partir de un archivo de punta, use awakeFromNib, si crea un objeto en el código, use init. – Abizern
Bueno, no, @sunwukong, no estoy sugiriendo que llame a initWithCoder usted mismo. El marco llamará a ese método cuando desarchive cualquier controlador de vista que tenga en su guión gráfico. Por lo tanto, si desea inicializar un controlador de vista en un guión gráfico, debe anular initWithCoder: y/o awakeFromNib. –