Каскадные модальные виды - PullRequest
       11

Каскадные модальные виды

0 голосов
/ 09 апреля 2009

Что я пытаюсь сделать:

  1. Отображение модального вида, где я получаю некоторый пользовательский ввод
  2. Показать еще один и получить больше ввода
  3. Делать некоторые вещи с помощью ввода 1. и 2.

Проблема заключается в следующем: presentModalViewController: animated: is неблокирующий . Это означает, что я не могу просто выполнить шаги 1.-3. последовательно.

Как я пытался ее решить:

ViewController0 создает ViewController1 и дает ему ссылку на себя, а затем представляет presentModalViewController: animated :. ViewController1 соберет пользовательский ввод, затем вызовет метод для ViewController0 (он имеет ссылку). Этот метод создаст ViewController2 и сделает то же самое, что и первый. ViewController2 также вызовет метод для ViewController0 (может даже быть тем же). Теперь ViewController0 имеет все данные (или должен) и может перейти к шагу 3.

Проблема с этим подходом:

  1. Это похоже на ужасный взлом (там имеет , чтобы быть лучшим способом сделать это).
  2. Это не работает . :-) Проблема в том, что ViewController0 пытается отобразить ViewController2. Это даже не будет отображаться. Мое предположение (я новичок в программировании на iPhone, но раньше занимался программированием на Windows), что эта операция выполняется не сразу, а где-то для дальнейшей обработки (аналогично очереди сообщений WIN32), и поэтому она как-то конфликтует операция удаления ViewController1!

Итак, есть идеи, как я могу решить эту проблему проще или заставить ее работать таким образом?

Ответы [ 3 ]

1 голос
/ 10 апреля 2009

Вы пытались позвонить [self presentModalViewController:ViewController2] из ViewController1?

Я спрашиваю, потому что я знаю, что подход работает, инициировав модальный контроллер представления из VC0 с:

[self.navigationController presentModalViewController:VC1]

А потом в какой-то момент в VC1 делаешь, как я описал выше. Второй модальный вид выглядит как оверлей, и после отклонения вы возвращаетесь к VC1.

1 голос
/ 13 апреля 2009

Я нашел решение этой проблемы здесь: http://forums.macrumors.com/showthread.php?t=513131 (ответ адвоката).

Спасибо за ваши ответы в любом случае.

0 голосов
/ 09 апреля 2009

Возможно, вы захотите сделать его одним контроллером модального представления, содержащим 2 субконтроллера. Основным модальным контроллером представления может быть UINavigationController, так что второй субконтроллер помещается в стек навигации, или вы можете сделать его контроллером простого представления и просто программно менять местами представления субконтроллеров.

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

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