Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > iOS > dismissViewControllerAnimated


Автор: Incinerated 26.9.2012, 10:05
Есть 3 viewController: главный и 2 последовательно вызываемые.
В главном вызов:
Код

self.notificationViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:self.notificationViewController animated:YES completion:nil];

в появившемся представлении делается вызов 3-его:
Код

DenyViewController* controller = [[DenyViewController alloc] initWithNibName:@"DenyViewController_iPhone" bundle:nil];
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:controller animated:YES completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];

и после манипуляций в 3-ем представлении я хочу вернуться на первое:
Код

[self dismissViewControllerAnimated:YES completion:nil];

Но он возвращается на второе, хотя во втором я тоже вызывал метод dismissViewControllerAnimated. В чем ошибка?
Пробовал во 2 представлении завести BOOL переменную. И проверять в методе viewDidAppear было ли показано представление. Тогда работает, но не так как надо. Работает так: анимация исчезания 3 представления, показ 2 и анимация исчезания 2 представления и показ первого. Хотелось бы чтобы была одна анимация с 3-его на 1-ый.


Спасибо.

Автор: Bitter 26.9.2012, 10:41
Это можно сделать через UINavigationController. Просто делая push и pop соответственно.

Автор: Incinerated 26.9.2012, 10:59
Цитата(Bitter @ 26.9.2012,  09:41)
Это можно сделать через UINavigationController. Просто делая push и pop соответственно.

Код

В первом представлении:
self.navigationController = [[UINavigationController alloc] initWithRootViewController:self];
self.navigationController.delegate = self;

и потом по кнопке
Код

[self.navigationController pushViewController:self.notificationViewController animated:YES];

и ничего не происходит. Ошибок тоже не кидает. Что-то сделал не так?

Автор: Incinerated 26.9.2012, 12:22
разобрался с navigationController. Все работает. Спасибо.

Автор: Maksys 26.9.2012, 12:26
Я вот на той неделе тра*ся с этой жопой. И выяснилось, что 
Код

[self dismissViewControllerAnimated:YES completion:nil];


Не отрабатывает, пока в главном треде идет анимация по этому же событию. Я поставил задержку [NSThread sleepForTimeInterval:1]; А вообще надо бы поставить какойнить блок в completion.
зы. но это касается моего случая. с этим были косяки в логике тредов. надо быть внимательней.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)