0

这对我来说太奇怪了。昨天我想我曾经在 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,从返回语句开始,一切看起来都很棒。但是,我抛出了“EXC_BAD_ACCESS”并且没有输出到调试器。我的 GuessWordController 的 viewDidLoad 中也有 NSLog,但它们都没有出现。

我尝试将 pushViewController 更改为使用情节提要设置的 segue,这似乎可行。但我想用 pushViewController 来做,因为我不想要动画。

我的设置方式是否有任何原因会导致应用程序崩溃,特别是 ios5.1?

4

1 回答 1

0

为什么不使用 segue 并创建一个没有动画的自定义 segue?

这比您尝试做的要容易得多。

从这里的文档...

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;

这应该有效。

于 2013-01-03T20:47:47.837 回答