1

я использую ниже код, чтобы передать от моего mainViewController других UIViewController:Как я могу получить представление, что текущий вид transmiited из этого

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:otherUiViewController]; 
UIWindow *window = [UIApplication sharedApplication].keyWindow; 
[UIView transitionFromView:window.rootViewController.view 
        toView:navigationController.view 
        duration:1.2f 
        options:UIViewAnimationOptionTransitionFlipFromLeft 
       completion:^(BOOL finished){ 
        window.rootViewController = navigationController; 
       }]; 

на otherUIViewController основную темой является то, что пользователь вводит некоторые входной и представить, что (но, возможно, потребуется некоторое перемещение на другие страницы тоже, именно поэтому я использую UINavigationController для показа otherUIViewController) при подаче на вход Я хочу, чтобы передать их обратно в мой mainViewController (UIViewController, что пользователь передается от него)

Вопрос в том, что лучший способ передать обратно пользователя? Есть ли способ получить оригинал mainViewController, который показал это UIViewController (otherViewController) и передать его обратно, или я должен создать новый экземпляр моего mainViewController и снова использовать код выше для передачи?

EDIT очень важный момент, который я забыл сказать, что я хочу, что пользователь не может вернуться к mainViewController, пока они подать на вход

+0

Изменение 'rootViewController' редко бывает хорошей идеей. Он имеет нежелательные побочные эффекты. Подумайте о том, чтобы сделать ваш контроллер навигации 'rootViewController' и сделать ваш основной контроллер представления его' topViewController'. Теперь вы можете нажать все контроллеры представлений, которые вам нужно показать в стек навигации, и вернуться в контроллер верхнего уровня в любой точке. –

+0

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

+1

. Вы можете сделать это с помощью контроллера навигации в качестве 'rootViewController'. Просто не включайте кнопку «Назад», пока пользователь не занесет достаточно данных. В качестве альтернативы используйте 'presentViewController: анимированный: завершение', чтобы представить навигационный контроллер по модулю поверх' rootViewController'. –

ответ

0

Есть два хороших вариантов для достижения этой цели:

Имейте navigationController как rootViewController и ваш текущий контроллер основного вида как его topViewController. Нажмите контроллер вида, в который вы должны ввести пользователя. Обязательно удерживайте кнопку «Назад» до тех пор, пока все данные не будут введены.

Другой вариант заключается в том, чтобы сохранить контроллер основного вида как rootViewController и использовать `presentViewController: анимированный: завершение: представить навигационный контроллер по модулю из него.

Следует отметить, что замена rootViewController редко является хорошей идеей, поскольку она имеет нежелательные побочные эффекты.

Хорошее кодирование!

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