Определить, когда я вернусь к ViewController

#objective-c #ios

#objective-c #iOS

Вопрос:

У меня есть два представления с их контроллерами. Приложение запускается с FirstViewController . Затем с помощью кнопки я открываю SecondViewController .

С помощью другой кнопки я отклоняю SecondViewController запрос на возврат FirstViewController .

Есть ли какой-либо способ обнаружить это FirstViewController , поскольку он восстановил фокус?

РЕДАКТИРОВАТЬ: Хорошо, я смотрю ответы и использую viewWillAppear , но не работаю, если использую a UIModalPresentationFormSheet .

 -(IBAction)openSecondView{
    SecondViewController *screen = [[SecondViewController alloc] initWithNibName:nil bundle:nil];
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    screen.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentModalViewController:screen animated:YES];
    [screen release];
}
  

И закройте это представление с помощью кнопки закрытия.

viewWillAppear никогда не вызывался.

Ответ №1:

реализовать метод viewWillAppear от UIViewController

 - (void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

}
  

Комментарии:

1. Я использовал его, но не работал. Я отредактировал вопрос с дополнительной информацией. Спасибо.

Ответ №2:

Добавьте метод делегирования (протокола). Вызовите метод делегирования непосредственно перед отключением SecondViewController.

Дополнительные сведения о делегировании см. в разделе Делегирование

Ответ №3:

реализация viewWillAppear: обратный вызов будет работать, только если вы используете контроллер навигации или tabbarcontroller для отображения другого контроллера при таком подходе вам нужно будет как-то проверить, является ли это только первым появлением представления или было вызвано по какой-либо другой причине;

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

Ответ №4:

Зависит от того, как вы настраиваете первый контроллер представления. Инкапсулируйте его в UINavigationViewController (и если вам не нужна панель навигации, вы всегда можете установить для нее значение hidden ( [self.navigationController.navigationBar setHidden:YES] ) . ViewWillAppear будет работать тогда.

Ответ №5:

внутри viewWillAppear FirstViewController

 - (void) viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"view 1 focused");
}