pushViewController: animated: происходит сбой без полезного вывода

Это так странно для меня. Вчера я думаю, что однажды произошел такой же сбой на устройстве iPhone4 ios6. Сегодня я попытался запустить свое приложение в симуляторе, и оно надежно зависает, когда я вызываю pushViewController. Вот код, который дает сбой.

    PFObject *selectedGame = [self.myTurnList objectAtIndex: index];
    [self.myTurnList removeObjectAtIndex:index];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
    GuessWordController *guessWord = [storyboard instantiateViewControllerWithIdentifier:@"GuessWordController"];
    guessWord.game = selectedGame;
    //[self performSegueWithIdentifier:@"toGuessWord" sender:self];
    [self.navigationController pushViewController:guessWord animated:NO];
    return;

Я положил туда кучу NSLog'ов, и все выглядит великолепно вплоть до оператора return. Однако я получаю "EXC_BAD_ACCESS" и не выводить данные в отладчик. У меня также есть NSLog в viewDidLoad моего GuessWordController, и ни один из них не появляется.

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

Есть ли какая-то причина, по которой я настроил это так, что приложение зависало, особенно ios5.1?

1 ответ

Почему бы не использовать переход и создать собственный переход без анимации?

Это намного проще, чем то, что вы пытаетесь сделать.

Из документов здесь...

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomSegues/CreatingCustomSegues.html#//apple_ref/doc/uid/TP40007457-CH16-SW1

Вы можете использовать эту функцию...

- (void)perform
{
// Add your own animation code here.

    [[self sourceViewController] presentModalViewController:[self destinationViewController] animated:NO];
}

Затем удалите все, что у вас есть, и просто используйте [self performSegueWithIdentifier:@"toGuessWord" sender:self]; вместо.

Тогда в prepareForSegue вам понадобится...

GuessWordController *controller = segue.destinationViewController;

controller.game = selectedGame;

Это должно работать.

Другие вопросы по тегам