Приложение попыталось представить модально активный контроллер - PullRequest
2 голосов
/ 10 ноября 2011

Я искал и нашел различные вопросы об этой ошибке, но не смог найти какой-либо конкретной помощи по моей проблеме (по крайней мере, мой минимальный опыт позволяет мне понять).

Я загружаю UIView из главного меню приложения, которое, в свою очередь, имеет несколько вариантов кнопок (называем это подменю). Один из них без проблем возвращается в главное меню ([self dismissModalViewControllerAnimated:YES];). Другая кнопка загружает UITableView (отдельный контроллер представления), который загружается нормально. Тем не менее, я хочу, чтобы кнопка в этом UITableView вернулась в подменю. Когда я использую вышеупомянутый код, он возвращается к главному меню. Кажется, я не могу найти способ создать действие, которое восходит к подменю UIView (подменю).

Когда я пытаюсь сделать стандартный ['uitableviewcontrollername' presentModalViewController:submenuView animated:YES]; , я получаю сообщение об ошибке Приложение пыталось представить модально активный контроллер (я получаю ту же ошибку, если я заменяю uitableviewcontrollername на self.

Ошибка имеет смысл в том, что я понимаю, что она уже активна, но мне нужна помощь в том, что именно является правильным способом сделать то, что я описал выше? Спасибо за ваше время.

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Я считаю, что правильный способ отклонить модальное представление - это использовать делегирование, как определено в здесь .

На практике вы определяете метод в «представлении меню», который отклоняетАктивное модальное представление вызывается обычным образом:

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

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

[delegate notifytoclose];

Использование [self dismissModalViewControllerAnimated: ДА] закрытие текущего экземпляра не всегда работает, хотя обстоятельства мне не ясны.Я также заметил различия между поведением iPAd и iPhone.

1 голос
/ 10 ноября 2011

Для моих конкретных нужд, вернулись из таблицы назад:

[self.mapLegendViewController dismissModalViewControllerAnimated:YES];

Замечание Грегори отмечено, и я рекомендую прочитать ссылку, которую он сделал, так какИнтересно, как каждый iPhone / iPad справляется с этими действиями.

...