什么是错误:“NSInvalidArgumentException原因:应用程序试图呈现自己的模态视图控制器

当我尝试运行应用程序时,它使我崩溃这是我得到的消息:

2014-07-25 14:40:28.116 X[13023:60b] (null) 2014-07-25 14:40:29.113 X[13023:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modal view controller on itself. Presenting controller is <GKHostedAuthenticateViewController: 0x10d625f90>.' *** First throw call stack: ( 0 CoreFoundation 0x00000001028a1495 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x00000001024e399e objc_exception_throw + 43 2 UIKit 0x0000000101190cdc -[UIViewController presentViewController:withTransition:completion:] + 4100 3 CoreFoundation 0x0000000102896f1c __invoking___ + 140 4 CoreFoundation 0x0000000102896dc4 -[NSInvocation invoke] + 308 5 UIKit 0x0000000101181abc -[_UIDelayedPresentationContext finishDelayedPresentation:] + 201 6 GameCenterUI 0x000000010c97f330 __41-[GKRemoteViewController setupRemoteView]_block_invoke + 37 7 CoreFoundation 0x0000000102896f1c __invoking___ + 140 8 CoreFoundation 0x0000000102896dc4 -[NSInvocation invoke] + 308 9 libdispatch.dylib 0x000000010340a851 _dispatch_call_block_and_release + 12 10 libdispatch.dylib 0x000000010341d72d _dispatch_client_callout + 8 11 libdispatch.dylib 0x000000010340d3fc _dispatch_main_queue_callback_4CF + 354 12 CoreFoundation 0x00000001028ff289 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9 13 CoreFoundation 0x000000010284c854 __CFRunLoopRun + 1764 14 CoreFoundation 0x000000010284bd83 CFRunLoopRunSpecific + 467 15 GraphicsServices 0x0000000103efdf04 GSEventRunModal + 161 16 UIKit 0x0000000101090e33 UIApplicationMain + 1010 17 X 0x00000001000064c3 main + 115 18 libdyld.dylib 0x000000010366e5fd start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb) 

可能是什么问题呢? 到现在为止,它突然发生了,谢谢所有的帮手

更新:@Sviatoslav Yakymiv发现这个我认为

 - (void)authenticateLocalUser { if (!gameCenterAvailable) return; GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; if (SYSTEM_VERSION_LESS_THAN(@"6.0")) { // ios 5.x and below [localPlayer authenticateWithCompletionHandler:^(NSError *error) { [self checkLocalPlayer]; }]; } else { // ios 6.0 and above [localPlayer setAuthenticateHandler:(^(UIViewController* viewcontroller, NSError *error) { if (!error && viewcontroller) { [viewcontroller presentViewController:viewcontroller animated:YES completion:nil]; } else { [self checkLocalPlayer]; } })]; } 

}

我可以改变它没有崩溃? 谢谢

你正在尝试从自己演示控制器。 大概你的代码包含如下内容:

 [self presentViewController:self completion:nil]; 

现在我看到你的代码后,我可以提供工作代码:

更换

 [viewcontroller presentViewController:viewcontroller animated:YES completion:nil]; 

 [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:viewcontroller animated:YES completion:nil]; 

同样的错误,当我不小心打电话给我

 presentViewController: 

两次

你还没有正确创build你的xib。 检查你所有的连接和代表。 你对xib的最后修改引入了一些问题。 当你的xib / storyboard不合适的时候,这个exception会抛出。