J'ai l'erreur la plus étrange, et j'espère que quelqu'un pourrait m'aider. Voici le code quand je crée un contrôleur de vue et le pousse à navigationController. le problème est de transmettre la variable aléatoire au nouveau contrôleur de vue. J'ai essayé de le passer dans la méthode init et de le passer avec la ligne commentée ci-dessous.ViewDidLoad étant appelé avant 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];
Cependant, lorsque je avoir accès à la variable aléatoire dans le viewDidLoad du MultipleBet, il est toujours faux.
ici est le code du 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;
}
et voici le code du viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"RANDOM2.2: %d", self.random);
}
i Déclarez la variable et la propriété comme ceci:
BOOL random;
@property (nonatomic) BOOL random;
et la sortie est toujours:
RANDOM2.2: 0
RANDOM2: 1
RANDOM2.1: 1
RANDOM1: 1
Pourquoi la NSLog du viewDidLoad avant d'être émis en sortie tous les autres? ça devrait être le dernier ... Serait-ce à cause de ma méthode init personnalisée? J'appelle le [super init], donc ça ne devrait pas poser de problème ...
oui, c'était ça :) dans la méthode init j'appelais [self.view addSubview: quelque chose] et ça appelait viewDidLoad ... j'ai changé le self.random = isRandom au début de la méthode et J'ai résolu mon problème ... je pensais que viewDidLoad était toujours appelé après l'init;) – ffleandro
Je me fais toujours un devoir d'assigner les variables que je passe à init * au début de la méthode pour éviter d'avoir des problèmes comme ceux-ci. Cela résout le problème, non? Veuillez marquer la réponse comme acceptée en cliquant sur la coche à gauche. Merci!:) – Altealice
cela m'a sauvé après une longue période! J'étais initWithFrame-ing un de mes sous-vues avec 'CGRectGetWidth ([self.view bounds])' Merci! – minovsky