0

我花了一个月的时间试图将我的 int 传递给一个新的视图。我的 int 称为 score 并连接到一个名为 scorelab 的标签。用户增加分数,一旦他们用完时间,游戏会将视图切换到游戏结束屏幕,我希望用户分数以标签的形式显示在游戏结束屏幕上。游戏控制器被调用GamePlayViewController,被放弃的控制器被调用GameDidEndViewController。我厌倦了试图让它发挥作用。我已经查看了所有可能的教程,但似乎对我的情况没有任何帮助。请帮助我,我将非常感激,这是我需要完成的游戏的最后一部分。先感谢您!

对不起,这里是代码:

GamePlayViewController.h

#import "GameDidEndViewController.h"


int score;

IBOutlet UILabel *scorelab;

GamePlayViewController.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

if ([[segue identifier] isEqualToString:@"GameOver"])
{

    GameDidEndViewController *vc = [segue destinationViewController];

    [vc setscore2: score];
}
}

GameDidEndViewController.h

#import "GamePlayViewController.h"
IBOutlet UILabel *scorelab2;
int score2;
}
@property (nonatomic , assign) int score2;
@property (nonatomic , assign) UILabel *scorelab2;

GameDidEndViewController.m

@synthesize score2 , scorelab2;
-(void)viewWillAppear:(BOOL)animated {
scorelab2.text = [NSString stringWithFormat: @"%d", score2];
[super viewWillAppear: animated];  
}
4

2 回答 2

4

你要做的是创建一个属性GameDidEndViewController来保存传入的score值。

@interface GameDidEndViewController : UIViewController {

....
}
@property(nonatomic,assign) int score;
@end

确保您@synthesize score@implementation(.m) 中。

现在,当您初始化并显示GameDidEndViewController您设置的分数时,可能是这样的。

GameDidEndViewController *end = .....// init the view.
end.score = score; // assuming you're doing this from GamePlayViewController where it has an int named `score`

希望这可以帮助 !

于 2012-06-25T23:10:35.783 回答
2

ViewControllers这是一些在using之间传递数据的教程Storyboard

  1. Storyboards Segue 教程:在视图控制器之间传递数据
  2. 如何在两个视图控制器之间传递数据的教程

或使用这样的东西:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:...]) {
        MyViewController *controller = (MyViewController *)segue.destinationViewController;
        controller.score = score;
    }
}

希望这可以帮助。

于 2012-06-26T02:12:37.043 回答