4

我开发了一个在测试中运行良好的应用程序,但是当它可以运行时,我在呈现模态视图控制器时遇到了一些崩溃问题。问题在这里的某个地方:

NSLog(@"Looks like we made it here 1");

UIViewController *mtaViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"mtaViewController"];
NSLog(@"Looks like we made it here 2");

[mtaViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
NSLog(@"Looks like we made it here 3");

[self presentModalViewController:mtaViewController animated:YES]; 
NSLog(@"Looks like we made it here 4");

我对控制台的输出是:

2012-06-14 09:26:24.161 appname[2013:707] Looks like we made it here 1
2012-06-14 09:26:24.165 appname[2013:707] Looks like we made it here 2
2012-06-14 09:26:24.166 appname[2013:707] Looks like we made it here 3
2012-06-14 09:26:28.866 appname[2013:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x343ac8bf 0x345fc1e5 0x342f5b6b 0x6d3fd 0x6e719 0x3778e7ff 0x37798d53 0x37798cc1 0x37838339 0x3783714f 0x37891d97 0x7ce1d 0x7cd47 0x3788eaa5 0x3776a81b 0x3776ffb9 0x34ec1ba7 0x36fe0e8d 0x3437f2dd 0x343024dd 0x343023a5 0x30b86fcd 0x37783743 0x84327 0x6b468)
terminate called throwing an exception

我已经设置了一个函数,当我想更改视图控制器时调用它,你可以看到它一直到“看起来我们在这里做了 3”所以我怀疑线路有问题

[self presentModalViewController:mtaViewController animated:YES];

任何人都可以帮忙吗?

4

2 回答 2

1

你确定你的视图控制器真的被初始化了吗?只是一个想法,但这条线

[mtaViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];

如果 mtaViewController 为 nil,则什么也不做。在 Cocoa 中,您可以毫无问题地向 nil 发送消息。只有当您尝试对它们执行特定操作时,您的应用才会在稍后崩溃。做

NSLog(@"%@", mtaViewController);

告诉你一些有用的东西?还请确保您连接了 IB 中必须连接的所有内容(如果您没有在原始代码中解决所有问题)。

顺便一提。这已被弃用。利用

presentViewController:animated:completion:

反而。

于 2012-06-14T08:42:12.913 回答
1

检查 mtaViewController 中的任何数组,我在您的代码中没有看到任何数组,所以我认为问题出在 mtaViewController 中。:)

于 2012-06-14T08:43:31.523 回答