2015-01-11 1 views
0

У меня есть домашний экран, который имеет push-сегу для различных других контроллеров. Однако, когда я возвращаюсь из одного (и только одного) из этих контроллеров представлений обратно на главный экран, я хочу, чтобы начальный экран перезагружал одну из своих функций. Метод viewWillAppear полезен (если я его реализую на главном экране), потому что он вызывается, когда я возвращаюсь к главному экрану, но есть ли что-то, что я могу добавить, что по существу проверяет «был ли я отправлен обратно на главный экран из -это конкретный контроллер? Я не очень красноречиво извиняюсь.Появится ли вид из определенного метода View Controller?

То, как я это делаю в данный момент, - это определить универсальную логическую переменную, которая становится истинной, когда я нахожусь на специальном контроллере представления, а затем в методе viewWillAppear, если логическое == true я перезагружаю функцию. Я не люблю использовать эти универсальные переменные, но он чувствует себя склонным к ошибкам.

n.b. Когда я говорю универсальную переменную, я имею в виду тот, который определен выше класса, это может быть не правильный термин.

+2

Использование экземпляр 'BOOL' переменная - прекрасный подход. – rmaddy

+0

Спасибо, не могу ли я это сделать без необходимости добавлять код к обоим контроллерам? – TimWhiting

+0

Зачем нужен код в обоих? Все должно быть в контроллере представления. – rmaddy

ответ

0

Когда вы отправляетесь с другого контроллера режима на главный экран, используете ли вы режим размотки? Если да, то контроллер дома вид должен иметь метод этой формы:

- (IBAction)unwindToThisViewController:(UIStoryboardSegue *)unwindSegue{ 
} 

В этом методе, вы можете проверить, если sourceViewController имеет определенный класс:

if([unwindSegue.sourceViewController isKindOfClass:[otherTypeOfviewController class]]){ 
    //perform the tasks you need carried out 
} 
Смежные вопросы