2013-06-24 1 views
0

У меня есть вид контейнера, который содержит контроллер вида. Мне нужно установить свойство non-UI в этом контроллере представления до вызова awakeFromNib. Однако метод prepareForSegue для встраивания segue не вызывается до тех пор, пока не произойдет пробуждениеFromNib.Возможно ли свойство в представлении контейнера перед вызовом FromNib?

Есть ли способ передать эту информацию содержащемуся контроллеру представления перед пробуждениемFromNib?

+0

Вы спрашиваете, как инициализировать что-то до того, как вызывается инициализатор? Что-то не так с установкой свойства в 'prepareForSegue:'? – Abizern

+0

Определенное свойство должно быть установлено до awakeFromNib, и prepareForSegue этого не делает. Это требуется суперклассом этого контроллера. Я предполагаю, что могу изменить этот код, но это третья сторона. Мне просто интересно, есть ли способ создать, например, пользовательский инициализатор, который может быть вызван непосредственно при использовании контейнера в раскадровке. –

+1

Какой внешний код? Кажется странным, что это нужно сделать. – Abizern

ответ

1

У меня подобная проблема в одном из моих приложений.

В принципе, у меня есть ViewController, у которого есть свойство для модели данных, но я никогда не уверен, когда на моем жизненном цикле фактически установлена ​​модель данных. Мое решение состояло в том, чтобы использовать Key-Value Observing для получения обратного вызова, когда он установлен.

Где-то до того, как значение может быть установлено:

[self addObserver:self forKeyPath:@"propertyName" options: 0 context: nil]; 

Callback:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { 

    if ([keyPath isEqualToString:@"propertyName"]) { 
     //do something 
    } 

} 

помню, чтобы отменить (я делаю это в моем dealloc)

[self removeObserver:self forKeyPath:@"propertyName"];