2012-03-28 17 views
0

Ich versuche, einen Storyboard-Übergang von einer UI-Schaltfläche, die ein Tag in einem Kalender ist, zu einem DayViewController mit Informationen an diesem Tag auszuführen. Der currentTitle der sender-UIbutton sollte an ein UILabel im dayView des DayViewControllers übergeben werden. Es geht erfolgreich zum neuen VC über und weist den Knopftitel einer Eigenschaft darin zu, jedoch wird das dayView (und die Grundansicht) meines DayViewControllers nicht initialisiert (ihre Adressen im Debugger sind beide 0x0) und ich bekomme eine leere Seite. Wie kann ich diese Ansichten in diesem Segment initialisieren? (Ich dachte, Blick auf einen VC verknüpft wurden, wenn automatisch initialisiert segued zu?)UIView nicht initialisiert vom Storyboard Segue

Hier ist die prepareForSegue immer genannt:

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

Hier ist setCurrentDayNumber im neuen VC

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

Hier ist mein Ansicht, die mit DayViewController im Storyboard verknüpft ist.

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

Vielen Dank im Voraus!

+0

Funktioniert das, wenn Sie @property zu 'strong' anstelle von' weak' ändern? – lnafziger

+0

oh mein Gott es tut! Danke, Fremder! – Patrick

+0

Gern geschehen! Willkommen bei Stack Overflow (SO), bitte akzeptieren Sie die Antworten (indem Sie auf das Häkchen neben der Antwort klicken), wenn sie Ihre Fragen beantworten, um der Person, die Ihnen geholfen hat, einen Kredit zu geben! – lnafziger

Antwort

0

Wenn Sie eine Eigenschaft als schwach deklarieren, behält sie den Wert nicht bei, es sei denn, ein anderer Benutzer hat ebenfalls einen Verweis darauf. Wenn der neue Ansichts-Controller gedrückt wird, wird die alte Schaltfläche entfernt und currentDayNumber als einzige Referenz beibehalten, sodass sie sich automatisch auf null setzt. (Dies ist, was schwach tun soll.)

Wenn Sie einen Verweis darauf, egal halten wollen, was, verwenden strong statt weak und stellen Sie sicher, _currentDayNumber bis auf Null irgendwo (wie ViewDidUnload), so dass Sie don Halte es nicht für immer.

Verwandte Themen