2009-12-29 4 views
0

J'ai deux ViewControllers: RedButtonViewController et le TweetViewController. RedButtonViewController génère des nombres aléatoires dans Textlabels et je veux utiliser le numéro ou l'étiquette avec le TweetViewController. Comment puis-je faire cela?Prendre un nombre aléatoire d'un ViewController et l'utiliser dans un second ViewController - Mise à jour

Merci pour votre aide!

Mon TweetViewController sera ouvert avec ce code dans le RedButtonViewController:

- (IBAction)TweetViewController:(id)sender { 
    TweetViewController *Tweet = [[TweetViewController alloc] initWithNibName:nil bundle:nil]; 
    [self presentModalViewController:Tweet animated:YES]; 
} 

Voici un exemple de la façon dont je produis le nombre aléatoire:

- (IBAction)pushRedButton:(UIButton *)sender { 

    int ZahlDerToten; 
    ZahlDerToten = arc4random() % 1000000; 

    outputLabel.text = [NSString stringWithFormat:@"You killed %d people.", ZahlDerToten]; 

Répondre

1

Créer une propriété sur le TweetViewController et définir avant de le présenter:

- (IBAction)TweetViewController:(id)sender { 
    // Note: don't put leading capitals on a local variable 
    TweetViewController *tweet = [[TweetViewController alloc] initWithNibName:nil bundle:nil]; 
    tweet.randomNumber = [self generateRandomNumber]; 
    [self presentModalViewController:tweet animated:YES]; 
    // Note: You were leaking the view controller 
    [tweet release]; 
} 

Une autre solution (et comment je fais habituellement ce genre de chose) est de créer une nouvelle initialiseur appelé -initWithNumber: (probablement quelque chose d'un peu plus descriptif que « nombre ») et l'appeler comme ceci:

- (IBAction)TweetViewController:(id)sender { 
    TweetViewController *tweet = [[TweetViewController alloc] initWithNumber:[self generateRandomNumber]]; 
    [self presentModalViewController:tweet animated:YES]; 
    [tweet release]; 
} 

-initWithNumber serait alors ressembler à quelque chose comme:

- (TweetViewController *)initWithNumber:(NSInteger)number { 
    self = [super initWithNibName:nil bundle:nil]; 
    if (self != nil) { 
     self.number = number; 
    } 
    return self; 
} 
+0

Salut merci pour votre réponse. J'ai essayé votre deuxième méthode et toujours quand j'utilise initWithNumber il dit dans la ligne: self.number = outputlabel; Demande de membre 'numéro' est quelque chose noot une structure ou un syndicat Peut-être le problème est, que je ne sais pas ce que j'ai à remplacer dans votre code et quoi ... je mets un exemple de la façon dont je génère le hasard numéro ci-dessus dans la question. – Flocked

+0

Dans ce code, j'ai supposé qu'il y aurait une propriété appelée "nombre", à titre d'exemple; Je suppose que le TweetViewController a de l'ivar contenant ce numéro. Vous ne devriez certainement pas passer l'étiquette elle-même. N'utilisez pas d'étiquettes pour stocker des données. Stocker les données dans les ivars; définir les valeurs des étiquettes à partir de ces ivars. Ceci est une caractéristique clé du modèle Model-View-Controller sur lequel repose Cocoa. Donc, si vous avez changé "numéro" ci-dessus pour être un UILabel, ne faites pas cela. Il devrait un NSUInteger dans votre exemple, et il devrait y avoir une propriété comme countOfKilledPeople. –

Questions connexes