Sto avendo l'errore più strano, e spero che qualcuno possa aiutarmi. Ecco il codice quando creo un controller di visualizzazione e lo spingo a navigationController. il problema è passare la variabile casuale al nuovo controller di visualizzazione. Ho provato a passarlo nel metodo init e anche a passarlo con la riga commentata di seguito.ViewDidLoad viene chiamato prima di 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];
Tuttavia quando accedo la variabile casuale nel viewDidLoad del MultipleBet, è sempre FALSE.
ecco il codice del 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;
}
e qui è il codice del viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"RANDOM2.2: %d", self.random);
}
dichiaro la variabile e proprietà come questa:
BOOL random;
@property (nonatomic) BOOL random;
e l'output è sempre:
RANDOM2.2: 0
random2: 1
RANDOM2.1: 1
RANDOM1: 1
Perché la NSLog dal viewDidLoad in fase di uscita prima di tutti gli altri? dovrebbe essere l'ultimo ... Potrebbe essere a causa del mio metodo init personalizzato? Io chiamo [super init], quindi non dovrebbe essere un problema ...
sì, era così :) nel metodo init stavo chiamando [self.view addSubview: qualcosa] e che stava chiamando viewDidLoad ... ho cambiato il self.random = isRandom all'inizio del metodo e ho risolto il mio problema ... pensavo che viewDidLoad venisse sempre chiamato dopo l'init;) – ffleandro
Ho sempre pensato di assegnare le variabili che passo a init * all'inizio del metodo per evitare problemi come questi. Questo risolve il problema, giusto? Si prega di contrassegnare la risposta come accettata facendo clic sul segno di spunta sulla sinistra. Grazie!:) – Altealice
questo mi ha salvato dopo tanto tempo! Ero initWithFrame di una delle mie sottoview con 'CGRectGetWidth ([self.view bounds])' Grazie !! – minovsky