«Приложение пыталось представить модально активный контроллер» Ошибка в iOS5 - PullRequest
3 голосов
/ 27 октября 2011

У меня ошибка, которая приводит к сбою моего приложения под iOS5 только на iPad.

Код ниже вызывается, когда пользователь нажимает на элемент в элементе uibarbutton:

- (void)optionSelected:(NSString *)option {

[self.optionPickerPopover dismissPopoverAnimated:YES];

if ([option compare:@"Map View"] == NSOrderedSame) {
    NSLog(@"Map View"); 
    MapView * map = [[MapView alloc] initWithNibName:@"MapView" bundle:nil]; 

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:map];

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Done"
                                                                    style:UIBarButtonItemStyleDone target:self action:@selector(removeCurrent)];
    map.navigationItem.rightBarButtonItem = rightButton;

    [self presentModalViewController:navigationController animated:YES];

    [navigationController release];
    [map release];     
    [rightButton release];
    [split presentModalViewController:map animated:YES];
}

Кто-нибудь может подсказать, почему это происходит в iOS5?

Ответы [ 2 ]

8 голосов
/ 27 октября 2011

Вы получаете эту ошибку, потому что вы пытаетесь отобразить контроллер представления карты дважды.Первый раз как корневой контроллер представления 'navigationController', а второй - через [split presentModalViewController:map animated:YES].

iOS 5 немного более требовательна, чем iOS 4, когда вы пытаетесь делать странные вещи с контроллерами представления,Попытка показать один и тот же контроллер дважды - это проблема дизайна - вам нужно решить, что вы действительно пытаетесь сделать, и исправить это.

(Кроме того, вызов контроллера представления карты «MapView», а не «MapViewController» действительно сбивает с толку)

3 голосов
/ 15 марта 2013

Эта ошибка также будет возникать, если вы не будете следовать этим рекомендациям: Создание пользовательских контроллеров представления содержимого

В основном вам нужно позвонить:

[yourVC removeFromParentViewController];

если у вас

[parentVC addChildViewController: yourVC];

Эта ошибка часто может быть связана с чем-то вроде «UIViewControllerHierarchyInconsistency»

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