objective-c - 如果用户尚未登录,Game Center身份验证会使我的应用程序崩溃

标签 objective-c xcode ios7 crash game-center

如果用户已在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/

相关文章:

frame - ios7上的UISlider框架错误

iphone - 在输出中使用 '%'

ios - 为什么此代码示例在返回之前进行复制?

xcode - 在 XCode 中启用代码 View 的抗锯齿

ios7 - 新的 Xcode 6 项目在 iPhone 5 上看起来不是全屏

objective-c - 如何在 UICollectionview 自定义单元格中显示 UI Activityindicator 直到图像在服务器端下载?

iphone - Plist文件中的"Load"文本并使用它(Xcode)

c++ - 如何在 mac os 中从磁盘读取原始数据

iphone - 游戏中心 IBAction 成就

ios - CGContextDrawImage 仅包含两个图像的交集