2011-04-20 128 views
0

我正在为C++和100%opengl编写iphone游戏。
我需要添加gamecenter它才能显示UIViews我不得不做一些冒险的事情。iOS:打开游戏中心成就视图时崩溃

void sb_socialShowAchievementsView(){ 
    SocialDelegate* del = [[[SocialDelegate alloc] init] autorelease]; 
    GKAchievementViewController *achievements = [[GKAchievementViewController alloc] init]; 
    if (achievements != nil) { 
     achievements.achievementDelegate = del; 
     HelperViewController* hvc = [[[HelperViewController alloc] init] autorelease]; 
     [globalGLView addSubview:hvc.view]; 
     [hvc presentModalViewController: achievements animated: YES]; 
    } 
    [achievements release]; 
} 

SocialDelegate实现协议GKAchievementViewControllerDelegateGKLeaderboardViewControllerDelegate

globalGLView是我的EAGLView实例。

HelperViewController只是一个UIViewController子类。

问题是,当我打电话sb_socialShowAchievementsView()应用程序接收到与以下调用堆栈和消息SIGABRT:

*** Assertion failure in -[UIButtonLabel setTextColor:], /SourceCache/UIKit_Sim/UIKit-1262.60.3/UILabel.m:312 
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: color' 


#0 0x98ece156 in __kill 
#1 0x98ece148 in kill$UNIX2003 
#2 0x98f60899 in raise 
#3 0x98f769b8 in abort 
#4 0x961a2fda in __gnu_cxx::__verbose_terminate_handler 
#5 0x03022333 in _objc_terminate 
#6 0x961a117a in __cxxabiv1::__terminate 
#7 0x961a11ba in std::terminate 
#8 0x961a12b8 in __cxa_throw 
#9 0x03022481 in objc_exception_throw 
#10 0x02e8b238 in +[NSException raise:format:arguments:] 
#11 0x022c6e37 in -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] 
#12 0x0052260f in -[UILabel setTextColor:] 
#13 0x005ec3d3 in -[UIButton layoutSubviews] 
#14 0x002a0481 in -[CALayer layoutSublayers] 
#15 0x002a01b1 in CALayerLayoutIfNeeded 
#16 0x004bd976 in __-[UINavigationController _positionNavigationBarHidden:edge:]_block_invoke_1 
#17 0x0043698f in +[UIView(Animation) _performWithoutAnimation:] 
#18 0x004c1e26 in -[UINavigationController _positionNavigationBarHidden:edge:] 
#19 0x004bd9ae in -[UINavigationController _positionNavigationBarHidden:] 
#20 0x004bc0c3 in -[UINavigationController _updateBarsForCurrentInterfaceOrientation] 
#21 0x004b99b1 in -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] 
#22 0x004c0bfd in -[UINavigationController viewDidMoveToWindow:shouldAppearOrDisappear:] 
#23 0x0044217f in -[UIView(Internal) _didMoveFromWindow:toWindow:] 
#24 0x00440d94 in -[UIView(Hierarchy) _postMovedFromSuperview:] 
#25 0x00439c30 in -[UIView(Internal) _addSubview:positioned:relativeTo:] 
#26 0x00437f83 in -[UIView(Hierarchy) addSubview:] 
#27 0x0049355b in -[UITransitionView transition:fromView:toView:] 
#28 0x006a3a16 in -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] 
#29 0x004b710d in -[UIViewController presentModalViewController:withTransition:] 
#30 0x0007ee96 in sb_socialShowAchievementsView at social-bindings-iphone.mm:184 

我只是不能得到什么我做错了......

+0

你可以这样做吗:[globalGLView presentModalViewController:achievement animated:YES]; ? – ugiflezet 2011-07-05 10:26:05

回答

0

我遇到了完全相同的问题。我有一个班级管理着几个月前我写的所有游戏中心内容,并且它运行良好。我尝试将它导入到一个新项目中,并调用标准方法来呈现GKAchievementViewController,然后它使用与您相同的SIGABRT崩溃。然后我尝试先认证玩家(我通常会在致电成就控制器之前执行此操作),问题就消失了。我想这是GameKit框架中的一个错误。我无法提交错误报告,因为错误记者显然有它自己的错误:)