Изменение ориентации iPad возвращает сигнал SIGABRT - PullRequest
0 голосов
/ 18 ноября 2011

Я создаю приложение, в котором при загрузке приложения и изменении ориентации оно может обрабатывать ориентацию.Но если я коснусь любого TableViewCell в RootViewController, чтобы отобразить таблицу в DetailViewController для приложения splitViewBased, а затем изменил ориентацию, то мое приложение аварийно завершится с помощью SIGABRT и выдаст следующее сообщение:

   *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_UITableViewReorderingSupport count]: unrecognized selector sent to instance 0x4e4eb30'

Метод, которым я являюсьзапись для обработки ориентации:

// Ensure that the view controller supports rotation and that the split view can therefore show in both portrait and landscape.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    //hot fix sometimes in multilevel bar button is shown in landscape mode.

    if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        [[self navigationItem] setLeftBarButtonItem:nil];
    }
    else {
        [[self navigationItem] setLeftBarButtonItem:self.appDelegate.rootPopoverButtonItem];
    }   
    return YES;
}

Ответы [ 2 ]

2 голосов
/ 28 ноября 2012

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

0 голосов
/ 18 ноября 2011

Добавьте NSLog после if и else, чтобы убедиться, что он читает каждый из них и посмотреть, где происходит сбой. Если есть didRotateTo или didRotateFrom, добавьте туда NSLog, чтобы увидеть, что происходит.

Также попробуйте просто вернуть YES: в shouldAutorotate и убрать if / else, чтобы убедиться, что он вращается правильно и больше ничего не мешает.

Наконец, проверьте вашу Цель> Поддерживаемая ориентация устройства, чтобы убедиться, что все ориентации поддерживаются

...