#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");
}