2012-04-23 4 views
7

В верхней части существующего вида я хочу: a) отобразить экран пользователю b) затем отправить SMS c) отобразить на экране другой экран.Может ли представленный контроллер просмотра также представлять собой контроллер представления?

Для а) Я делаю это:

[[UIApplication sharedApplication].delegate.window.rootViewController presentViewController: firstController animated: NO completion:nil]; 

и б) я делаю то же самое, за исключением того, это представляет другую ВУ конечно, MFMessageComposeViewController.

Однако для того, чтобы б), чтобы появиться, я первым должен отклонить первый контроллер представления с помощью:

[[UIApplication sharedApplication].delegate.window.rootViewController dismissViewControllerAnimated:NO completion: nil]; 

Это работает до сих пор, я вижу первый взгляд кажется то увидеть СУБ сочинить вид появляется. Когда SMS отсылается Я делаю это, чтобы отклонить мнение о SMS сочинить

[[UIApplication sharedApplication].delegate.window.rootViewController dismissViewControllerAnimated:NO completion: nil]; 

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

На самом деле экран перед видом SMS и после него такие же, за исключением того, что они имеют разный текст, так что проще последовательность шагов будет:

а) представить контроллер представления с текстом «ABC» б) представить контроллер SMS c) при отправке СМС диспетчер SMS d) обновить текст в первом контроллере представления с помощью IBOutlet e) отклонить первый контроллер представления.

Однако, как упоминалось ранее, если я не отклоняю первый контроллер просмотра, контроллер SMS не появится. Поэтому мой главный вопрос: как я могу представить контроллер SMS поверх первого контроллера представления?

ответ

0

iOS не позволяет одновременно открывать два модальных вида. Модальный вид - это самый верхний вид.

+3

Однако в IOS 5 (который я использую) «модальный» теперь больше устаревшей терминологии и обратите внимание, как я использую presentViewController, а не presentModalViewController. Это тот случай, когда представленный контроллер представления не может, в свою очередь, представлять собой контроллер представления? – Gruntcakes

8

Вы можете присутствовать либо один за другие закрытия:

UIViewController *rvc = [UIApplication sharedApplication].delegate.window.rootViewController; 
[rvc dismissViewControllerAnimated:NO completion:^{ 
    [rvc presentViewController: secondController animated: NO completion:nil]; 
}]; 

Или представить другие на вершине:

UIViewController *rvc = [UIApplication sharedApplication].delegate.window.rootViewController; 
UIViewController *pvc = rvc.presentedViewController; // you may need to loop through presentedViewControllers if you have more than one 
[pvc presentViewController: secondController animated: NO completion:nil]; 
+0

Выше второго метода есть какие-либо изменения для отклонения приложения из Appstore ..? – g212gs

+1

Зачем нужно хранить магазин приложений, если вы представляете/отклоняете диспетчеры представлений? –

+0

Причина Обычно мы можем представить только один viewController за раз, Но я могу добиться того, чего хочу, используя вашу технику. – g212gs

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

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