-3

可能重复:
为什么我的 UILabel 不显示 NSInteger

昨天我问为什么我的标签不会更新,它总是显示 0,有人告诉我这是因为我正在制作视图控制器的新 ivar,它不是实际的视图控制器(游戏控制器的第 4 行)。如何在实际屏幕上更新 UILabel?我可以用某种方法来实例化 viewController 是实际的 ViewController 还是我必须编写一个方法来询问 gameController ivar 的分数是多少?我显然在这一点上迷路了。

在视图控制器中

-(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];
}
}
4

1 回答 1

0

GameController课堂上,您正在创建一个新实例viewController而不是调用原始实例。考虑让主 viewController 类成为 GameController 的委托,并在GameControllerDelegate协议中创建一个从 GameController 到 viewController 通信的方法。

于 2012-10-02T02:08:44.697 回答