2012-03-28 3 views
0

J'essaye d'effectuer une séquence de Storyboard à partir d'un bouton UI qui est un jour sur un calendrier à un DayViewController avec des informations sur ce jour. Le bouton currentTitle de l'émetteur UIbutton doit être passé à un UILabel dans le dayView du DayViewController. Il se connecte avec succès au nouveau VC et assigne le titre du bouton à une propriété dedans, cependant le dayView (et la vue de base) de mon DayViewController n'est pas initialisé (leurs adresses dans le débogueur sont 0x0) et j'obtiens une page blanche. Comment puis-je obtenir ces vues pour initialiser dans cette section? (Je pensais que des vues liées à un VC ont été initialisés automatiquement segued à?)UIView non initialisé à partir de Storyboard Segue

est ici le prepareForSegue s'appelle:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(UIButton *)sender 
{ 
    if ([segue.identifier isEqualToString:@"ShowDay"]) { 
     DayViewController *vc = segue.destinationViewController; 
     [vc setCurrentDayNumber:sender.currentTitle]; 
} 

est ici setCurrentDayNumber dans le nouveau VC

-(void)setCurrentDayNumber:(NSString *)currentDayNumber 
{ 
    _currentDayNumber = currentDayNumber; 
    [self.dayView setNeedsDisplay]; 
}  

Voici mon vue liée à DayViewController dans le storyboard.

@property (nonatomic, weak) IBOutlet DayView *dayView; 

Merci d'avance!

+0

Est-ce que cela fonctionne si vous changez le @property à 'strong' au lieu de' weak'? – lnafziger

+0

oh mon Dieu ça l'est! merci étranger! – Patrick

+0

Vous êtes les bienvenus! Bienvenue à Stack Overflow (SO), veuillez accepter les réponses (en cochant la case à côté de la réponse) quand ils répondent à vos questions afin de donner du crédit à la personne qui vous a aidé! – lnafziger

Répondre

0

Lorsque vous déclarez une propriété comme faible, elle ne "s'accroche" pas à la valeur à moins que quelqu'un d'autre n'y ait également une référence. Lorsque le nouveau contrôleur de vue est enfoncé, l'ancien bouton disparaît, laissant currentDayNumber comme seule référence, il se met donc automatiquement à zéro. (C'est ce que faible est censé faire.)

Si vous souhaitez conserver une référence à peu importe quoi, utiliser strong au lieu de weak et assurez-vous de mettre _currentDayNumber à zéro quelque part (comme viewDidUnload), de sorte que vous ne ne le retiens pas pour toujours.

Questions connexes