UIView没有从Storyboard Segue初始化

时间:2012-03-28 20:10:35

标签: uiview initialization storyboard segue

我正在尝试从日历上的一天的UI按钮到DayViewController执行Storyboard segue,其中包含当天的信息。发送方UI按钮的currentTitle应该传递给DayViewController的dayView中的UILabel。它成功地分段到新的VC并将按钮标题分配给其中的属性,但是我的DayViewController的dayView(和基本视图)没有被初始化(它们在调试器中的地址都是0x0)并且我得到一个空白页面。如何在这个segue中初始化这些视图? (我认为链接到VC的视图在被绑定时会自动初始化?)

以下是调用的prepareForSegue:

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

这是新VC中的setCurrentDayNumber

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

这是我的视图,它与故事板中的DayViewController相关联。

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

当您将属性声明为弱时,它将不会“保持”该值,除非其他人也引用该属性。按下新视图控制器时,旧按钮消失,将currentDayNumber保留为唯一参考,因此它会自动将其自身设置为nil。 (这是应该做的弱事。)

如果你想保留对它的引用,请使用strong而不是weak,并确保将_currentDayNumber设置为nil(如viewDidUnload),这样就不会保留它永远。