我有一个 ViewController 和 GameController 类,它是 NSObject 的子类。视图控制器有一个链接到它的按钮,并触发一个初始化 GameController 类的 IBAction。在 GameController 类的 init 中,有一个 CADisplayLink,它向名为 Score 的 int 加一。在调试器中分数正在上升,但标签只会显示 0。
在视图控制器中
-(void)setScore:(NSInteger)gameScore{
NSString *string = [NSString stringWithFormat:@"%i", gameScore];
scoreLabel.text = string;
NSLog(@"the score is %i", gameScore);
}
-(IBAction)play:(id)sender{
gameController = [[GameController alloc] init];
//in my header is GameController* gameController;
}
在游戏控制器中
-(id)init{
self = [super init];
if (self) {
viewController = [[ViewController alloc] init];
//in header ViewController* viewController;
displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(gameLoop:)];
[displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode: NSRunLoopCommonModes];
//in the header CADisplayLink* displayLink;
}
return self;
}
-(void)gameLoop:(CADisplayLink *)sender{
deltaScore++;
if (deltaScore >= 20) {
deltaScore -= 20;
score++;
//deltaScore and score are NSIntegers
[viewController setScore:score];
}
}
分数未更新,因为您正在游戏控制器中创建视图控制器的新实例,您需要以某种方式将视图控制器的对象传递给游戏控制器,然后使用相同的对象调用方法 setScore。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)