UIView не инициализирован из Storyboard Segue - PullRequest
0 голосов
/ 29 марта 2012

Я пытаюсь выполнить переход Storyboard из кнопки UIbutton, которая является днем ​​в календаре, в DayViewController с информацией об этом дне.Текущий заголовок UIbutton отправителя должен быть передан 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 в новом VC

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

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

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

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

1 Ответ

0 голосов
/ 29 марта 2012

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

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

...