2014-07-07 3 views
0

Je suis nouveau sur iOS et j'essaie de trouver quelque chose qui soit probablement basique. J'ai deux UIViews, avec quatre boutons sur chaque page, et quatre étiquettes sous chaque bouton. Fondamentalement, si j'appuie sur le bouton 1 sur le contrôleur de vue 1, j'aimerais que toutes les étiquettes sur le contrôleur de vue 2 lisent simplement "1". Voici une image pour un meilleur confort visuel:Modification de texte sur un contrôleur de vue séparé

enter image description here

Maintenant, j'ai connecté une transition Modal de bouton 1 à 2 View Controller IB et appeler cette méthode:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if([segue.identifier isEqualToString:@"number1"]){ 
     ViewController2 *controller2 = [[ViewController2 alloc]init]; 
     controller2.label1.text = @"1"; 
      NSLog(@"Fired"); 
      NSLog(@"%@", controller2.label1.text); 
    } 
} 

Il transitions très bien, mais ne change pas l'étiquette. Les NSLogs montrent que la méthode se déclenche, mais l'étiquette est nulle. Est-ce que quelqu'un sait ce que j'ai besoin de changer ici?

Je déclare mon étiquette ViewController2 comme ceci:

@interface ViewController2 : UIViewController { 
    UILabel *label1; 
} 

@property (strong, nonatomic) IBOutlet UILabel *label1; 

@end 

Voici l'inspecteur des connexions pour label1: enter image description here

Répondre

1

Vous créez une toute nouvelle instance de votre contrôleur de vue. Le storyboard crée le contrôleur de vue pour vous et vous le transmet pour la configuration dans la méthode prepareForSegue:sender:. Vous pouvez y accéder comme ceci:

ViewController2 *controller2 = (ViewController2 *)segue.destinationViewController; 
// configure controller2 here 

En outre, les prises sur un contrôleur de vue ne sont pas définies lorsque prepareForSegue: est appelé. Vous devez avoir une propriété NSString sur le deuxième contrôleur de vue. Plus tard, vous pouvez utiliser viewDidLoad pour définir le texte de l'étiquette sur la valeur détenue par la propriété NSString que vous avez définie précédemment.

+0

Merci. J'ai changé la ligne à celle que vous avez posté, mais cela ne change toujours pas l'étiquette. Je ne sais pas pourquoi, c'est confus. – John

+0

Avez-vous l'étiquette correctement connectée à 'ViewController2' dans votre storyboard? – duci9y

+0

Oui, oui. En outre, j'ai édité mon OP pour montrer comment je l'ai déclaré, cela peut être le problème. – John

Questions connexes