После некоторого времени, требующего ответа, я должен признать, что я довольно запутался в этом случае.Есть ли способ отклонить текущий ViewController после представления другого?
В моей работе, я попросил, чтобы сделать что-то действительно конкретное:
Я должен представить UIViewController на предыдущем UIViewController, на самом деле, нынешний ViewController распускать себя перед вторым появится. Это придает смешной анимации, что ViewController идет вниз, а другой после этого снижается. Но ... На самом деле это не «профессионал», и мы можем видеть rootViewController за сценой во время анимации.
Итак, я должен точен, что никаких NavigationController, что сделал бы это намного проще, на мой взгляд, так что я вынужден сделать это с двумя UIViewController, и есть мой фактический код:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"userViewController"];
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:controller animated:YES completion:^{
[self dismissViewControllerAnimated:YES completion:nil];
}];
Это вызов сразу после нажатия кнопки, поэтому никаких проблем с фактическим ViewController viewDidLoad или viewDidAppear я не считаю.
Но каждый раз, когда этот код работает, я получаю следующее сообщение об ошибке:
[1163:17641] Warning: Attempt to present <UserViewController: 0x7b0f0a00> on <EIHomeViewController: 0x7b0d2a00> whose view is not in the window hierarchy!
Я не знаю, как мне удалось сохранить следы текущего UIViewController, чтобы отклонить его в следующем ViewController viewDidAppear чтобы быть уверенным, что на экране не будет «затемнения».
Благодарим за помощь!
У меня был один и тот же код, как до, за исключением, что распускать был Animated, всегда это «затемнение» между двумя ViewController, плюс у меня нет больше " поднимается "анимация. Но да, это в значительной степени уменьшает задержки. Но я ищу что-то, что позволяет мне добавить ViewController на другой, чтобы отклонить этот другой вид после нового ViewController viewDidAppear. : s –
Но если вы представляете следующий vc из текущего vc, у вас будет стек вроде: root-> current-> next. Если теперь вы вызываете 'rejectViewControllerAnimated' на текущем (next's presentingViewController), следующий также исчезнет. –
Невозможно вызвать следующий корень? Как взломать из стека или с другим слоем, который заставляет его появляться поверх экрана? –