2014-01-14 1 views
0

У меня есть контроллер модального представления, и перед его увольнением мне нужно вызвать метод делегата, который сообщает контроллеру родительского представления обновить. (Поскольку методы, подобные viewWillAppear, не вызываются при отключении контроллера модального представления).Метод делегирования вызова перед просмотром Устранение

Так что мой код выглядит следующим образом:

[delegate addEquipmentDidSave:YES]; 
[self dismissViewControllerAnimated:YES completion:nil]; 

Очень просто. Отправьте сообщение назад, говоря, обновите сейчас! А потом просто отбросьте взгляд. Однако, хотя обе эти строки вызывают, метод делегата никогда не запускается. Поэтому я проверяю, правильно ли он делегирован. Когда я представляю модальное представление, я устанавливаю делегат, поэтому его все связано.

Как будто у метода делегата нет возможности запустить до отклонения представления. Это возможно? Как вы думаете, что может быть проблемой?

Спасибо.

+0

ли вы проверить делегат устанавливается, когда вы приходите, чтобы запустить код? – Wain

+0

Если вопросы, связанные с делегатом, прекрасны, просто попробуйте отклонить представление внутри метода делегата.? –

+0

@ C_X Почему? когда есть блок завершения, который уже можно использовать в методе увольнения? – Abizern

ответ

3

Перед вызовом ваш метод делегата сначала проверить, является ли он доступен или нет

if ([self.delegate respondsToSelector:@selector(addEquipmentDidSave:)]) 
{ 
    NSLog("Yes it's available"); 
    [self.delegate addEquipmentDidSave:YES]; 
} 

[self dismissViewControllerAnimated:YES completion:nil]; 
+0

Я никогда не знал, как использовать 'responsesToSelector', привело меня к проблеме! Оказывается, я представлял модальный вид из двух мест. Выбрав только одну настройку делегата правильно. –

0

Вы видите последний параметр, который называется completion? Этот блок вызывается после отклонения контроллера вида. Сделайте то, что вы хотите сделать там.

 Смежные вопросы

  • Нет связанных вопросов^_^