Ios 由于未捕获异常NSInvalidArgumentException而终止应用程序
我有一个应用程序,其中包括游戏中心排行榜和Admob横幅。广告是实时的,当我通过Xcode 8在实际设备上运行应用程序时,它运行良好。但是,当我从Xcode 8启动模拟器时,应用程序会加载,但几秒钟后,我出现了错误:Ios 由于未捕获异常NSInvalidArgumentException而终止应用程序,ios,swift,admob,game-center,Ios,Swift,Admob,Game Center,我有一个应用程序,其中包括游戏中心排行榜和Admob横幅。广告是实时的,当我通过Xcode 8在实际设备上运行应用程序时,它运行良好。但是,当我从Xcode 8启动模拟器时,应用程序会加载,但几秒钟后,我出现了错误: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modal view con
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Application tried to present modal view controller on itself. Presenting controller is <GKHostedAuthenticateViewController: 0x7f818d749310>.'
并调用通知,从场景类中显示/隐藏横幅,如下所示:
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "showbannerad"), object: nil);
我在自己的类中初始化Game Center对象,并从开始屏幕调用其init方法Game Center控制器的init如下所示:
func authPlayer(scene: SKScene) {
let localPlayer = GKLocalPlayer.localPlayer();
localPlayer.authenticateHandler = {
(view, error) in
if view != nil {
view!.present(view!, animated: true, completion: nil);
}else {
print(GKLocalPlayer.localPlayer().isAuthenticated);
}
}
}
/// In the GamvViewController
func showBannerAd() {
if mybanner.isHidden == true {
mybanner.isHidden = false;
}
}
奇怪的是,它可以在实际设备上工作,但不能在模拟器上工作。如果你想了解更多细节,请告诉我。谢谢 在localPlayer.authenticateHandler中,有一个视图,该视图是什么类?它是否为AuthenticateViewController?如果是,这就是问题所在。
错误消息很清楚,一些ViewController调用present it self.在localPlayer.authenticateHandler中,有一个视图,它是什么类?它是不是身份验证ViewController?如果是,这就是问题所在。
错误信息很清楚,一些ViewController称当前为它自己。什么是
mybanner
?为什么将其rootViewController
设置为自身??这似乎是问题所在。显示您正在使用通知调用的funcs
。我的横幅是Admob横幅。它在GameViewController类中。什么是mybanner
?为什么将其rootViewController
设置为自身??这似乎是问题所在。显示您正在使用通知调用的funcs
。我的横幅是Admob横幅。它位于GameViewController类中。
func authPlayer(scene: SKScene) {
let localPlayer = GKLocalPlayer.localPlayer();
localPlayer.authenticateHandler = {
(view, error) in
if view != nil {
view!.present(view!, animated: true, completion: nil);
}else {
print(GKLocalPlayer.localPlayer().isAuthenticated);
}
}
}
/// In the GamvViewController
func showBannerAd() {
if mybanner.isHidden == true {
mybanner.isHidden = false;
}
}