UIView не инициализирован из раскадровки Segue

Я пытаюсь выполнить переход раскадровки от UIbutton, который является днем ​​в календаре, к DayViewController с информацией об этом дне. CurrentTitle кнопки пользовательского интерфейса отправителя должно быть передано в UILabel в dayView DayViewController. Он успешно переходит к новому VC и присваивает заголовок кнопки свойству в нем, однако dayView (и базовое представление) моего DayViewController не инициализируется (их адреса в отладчике равны 0x0), и я получаю пустую страницу. Как я могу инициализировать эти представления в этом переходе? (Я думал, что представления, связанные с VC, автоматически инициализируются при переходе?)

Здесь вызывается prepareForSegue:

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

Вот setCurrentDayNumber в новом ВК

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

Вот мое представление, которое связано с DayViewController в раскадровке.

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

Заранее спасибо!


person Patrick    schedule 28.03.2012    source источник
comment
Будет ли это работать, если вы измените @property на strong вместо weak?   -  person lnafziger    schedule 29.03.2012
comment
о боже мой, это так! спасибо незнакомец!   -  person Patrick    schedule 29.03.2012
comment
Добро пожаловать! Добро пожаловать в Stack Overflow (SO), пожалуйста, принимайте ответы (щелкнув галочку рядом с ответом), когда они ответят на ваши вопросы, чтобы отдать должное человеку, который вам помог!   -  person lnafziger    schedule 29.03.2012
comment
еще раз спасибо! Я искал, как отдать должное комментарию, но теперь понял. вы сделали мой первый опыт работы с этим сайтом замечательным, я обязательно начну вносить свой вклад / задавать больше вопросов!   -  person Patrick    schedule 29.03.2012
comment
Большой! Постарайтесь помочь другим, отвечая на вопросы, с которыми у вас есть опыт. :-)   -  person lnafziger    schedule 29.03.2012


Ответы (1)


Когда вы объявляете свойство слабым, оно не будет «удерживать» значение, если кто-то еще не имеет на него ссылку. Когда нажимается новый контроллер представления, старая кнопка исчезает, оставляя currentDayNumber в качестве единственной ссылки, поэтому она автоматически устанавливается на nil. (Это то, что должен делать слабый.)

Если вы хотите сохранить ссылку на него, несмотря ни на что, используйте strong вместо weak и убедитесь, что где-то установлено _currentDayNumber равным нулю (например, viewDidUnload), чтобы вы не сохраняли его навсегда.

person lnafziger    schedule 28.03.2012