Tengo el error más extraño, y espero que alguien pueda ayudarme. Aquí está el código cuando creo un controlador de vista y lo presiono a navigationController. el problema es pasar la variable aleatoria al nuevo controlador de vista. Intenté pasarlo en el método init y también pasarlo con la línea comentada a continuación.¿Se está llamando a ViewDidLoad antes de initWithNibName?
MultipleBet *multipleBet = [[MultipleBet alloc] initWithMaxNumber:numbers andMaxStars:stars andRandom:self.random];
NSLog(@"RANDOM1: %d", self.random);
//[multipleBet setRandom:self.random];
UIBarButtonItem *backButton = [[[UIBarButtonItem alloc] init] autorelease];
backButton.title = @"Voltar";
self.navigationItem.backBarButtonItem = backButton;
[self.navigationController pushViewController:multipleBet animated:YES];
[multipleBet release];
Sin embargo, cuando tengo acceso a la variable aleatoria en el viewDidLoad del MultipleBet, siempre es FALSO.
aquí es el código de la MultipleBet:
- (id)initWithMaxNumber:(int)maxNumbers andMaxStars:(int)maxStars andRandom:(BOOL)isRandom {
self = [super initWithNibName:@"MultipleBet" bundle:[NSBundle mainBundle]];
...
self.random = isRandom;
NSLog(@"RANDOM2: %d", self.random);
NSLog(@"RANDOM2.1: %d", isRandom);
return self;
}
y aquí está el código de la viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"RANDOM2.2: %d", self.random);
}
Declaro la variable y la propiedad como esta:
BOOL random;
@property (nonatomic) BOOL random;
y la salida es siempre:
RANDOM2.2: 0
random2: 1
RANDOM2.1: 1
RANDOM1: 1
¿Por qué el NSLog del viewDidLoad que se emite antes de que todos los demás? debería ser el último ... ¿Podría ser por mi método init personalizado? Llamo al [superinicio], por lo que no debería ser un problema ...
sí, eso fue :) en el método init estaba llamando [self.view addSubview: algo] y que estaba llamando a viewDidLoad ... cambié el self.random = isRandom al comienzo del método y Resolvió mi problema ... pensé que se llamaba a viewDidLoad después del init;) – ffleandro
Siempre hago un punto para asignar las variables que paso a init * al comienzo del método para evitar problemas como estos. Esto resuelve el problema, ¿verdad? Marque la respuesta como aceptada haciendo clic en la marca de verificación a la izquierda. ¡Gracias!:) – Altealice
esto me salvó después de un largo tiempo! Fui initWithFrame-ing una de mis subvistas con 'CGRectGetWidth ([self.view bounds])' ¡Gracias! – minovsky