Возвращаясь к первому ViewController из второго ViewController - PullRequest
2 голосов
/ 15 марта 2012

Я создаю приложение, которое в настоящее время имеет 3 ViewControllers. Один из них используется после успешного входа в систему, поэтому не имеет значения в этом вопросе.

Я использую смесь раскадровок и строю вещи программно, когда нахожу, что раскадровки не дают мне точный контроль, который мне нужен.

Первый ViewController встроен в мою 'MainStoryboard'. Он имеет форму входа и информационную кнопку внизу. Я связываю его с моим AppDelegate, выполняя следующие действия внутри didFinishLaunchingWithOptions :

ViewController *viewController = (ViewController *)self.window.rootViewController;

Поскольку я хотел форсировать рендеринг UIWebView (другая история), я создаю второе представление программно. Я делаю следующее внутри didFinishLaunchingWithOptions :

infoViewController = [[InfoViewController alloc] init];
[infoViewController view];

Внутри обоих моих ViewControllers я устанавливаю ссылку на appDelegate, как показано ниже:

appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

У меня есть информационная кнопка в моем первом ViewController, которая ведет вас к infoViewController. При нажатии вызывается следующий код:

appDelegate.infoViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:appDelegate.infoViewController animated:YES];

Вышеописанное прекрасно работает, переворачивает экран и показывает InfoViewController.

На моем InfoViewController у меня есть кнопка, которая должна вернуть вас на страницу входа в систему, я пробовал все виды, чтобы заставить это работать, но это просто вылетало из моего приложения. Ничто не похоже на работу. Я пробовал следующее:

appDelegate.viewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:appDelegate.viewController animated:YES];

и

[self.navigationController popToRootViewControllerAnimated:YES];

и

[self.navigationController popViewControllerAnimated:YES];

и

[self.navigationController popToViewController:appDelegate.viewController animated:YES];

Я подозреваю, что последние 3 могут быть больше связаны с тем, когда у вас есть контроллер представления навигации, и вы хотите вернуться к корню? Я не уверен, но в любом случае это не работает. Раньше я работал с использованием раскадровок, поэтому я уверен, что это должно быть легко! Как уже упоминалось, я переключился на создание infoViewController программно, чтобы заставить UIWebView отображаться до появления представления.

Любая помощь высоко ценится.

Ответы [ 5 ]

6 голосов
/ 15 марта 2012

Вы можете сделать с:

[self dismissModalViewControllerAnimated:YES];
5 голосов
/ 15 марта 2012

Вы должны использовать это.

[self dismissModalViewControllerAnimated:YES];
1 голос
/ 15 марта 2012

Вы должны использовать главный контроллер для переключения между вашими другими контроллерами представления.Измените представление вашего корневого контроллера на один из ваших других контроллеров представления (применяйте анимацию как обычно, если это необходимо).Удерживайте указатель на ваш корневой контроллер в других контроллерах представления и вызовите self.rootController.view = <desired_controller_instance>.view

0 голосов
/ 16 марта 2012

Также в представленном контроллере вы можете использовать это

if(self.parentViewController)
    [self.parentViewController dismissModalViewControllerAnimated:YES];
else
    [self.presentingViewController dismissModalViewControllerAnimated:YES];

Для сброса регулятора тока.

0 голосов
/ 15 марта 2012

Я думаю, что вы представляете свой InfoViewController неправильно.Сделайте это следующим образом:

В вашем ViewController создайте действие для кнопки «Информация».напишите это:

- (void)takeBackToViewController
{
   [self dismissModalViewControllerAnimated:YES];
}

Надеюсь, что это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...