如果用户已在Game Center中登录,则应用程序可以平稳运行,但是如果用户未登录,则应用程序在启动时崩溃。
-预期的行为是如果尚未登录,则提示用户登录游戏中心
这是错误消息:由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“应用程序试图在其自身上显示模式 View Controller 。正在显示 Controller 为“。
首先抛出调用堆栈:
(0x30496ecb 0x3ac31ce7 0x32db01db 0x3049a414 0x303e4967 0x32f8e71b 0x310b906d 0x3049a414 0x303e4967 0x3b11ad53 0x3b11ad3f 0x3b11d6c3 0x30461641 0x3045ff0d0x3b003300330ca0330033ca
libc++ abi.dylib:以类型为NSException的未捕获异常终止
这是验证用户身份的代码:
- (void)authenticateLocalUser {
if (!gameCenterAvailable) return;
GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
if (SYSTEM_VERSION_LESS_THAN(@"6.0")) {
NSLog(@"...");
} 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];
}
})];
}
}
编辑-更多详细信息。
最佳答案
从错误消息中可以很清楚地看出:“应用程序试图在其自身上显示模式 View Controller 。”您正在尝试在“viewcontroller”上显示“viewcontroller”。
[viewcontroller presentViewController:viewController...];
我相信这段代码属于UIViewController类。
[self presentViewController:viewcontroller animated:YES completion:nil];
应该做到的。
关于objective-c - 如果用户尚未登录,Game Center身份验证会使我的应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24921495/