【问题标题】:Retain UILabel value between random views在随机视图之间保留 UILabel 值
【发布时间】:2013-02-22 13:15:10
【问题描述】:

我正在为 iPhone 制作一个基于视图的测验应用程序,玩家在回答问题时会在三个不同的视图之间随机切换。他们在回答正确时获得+1,在点击错误答案时获得-1。但是在回答完问题后,当你进入新的随机视图时,我需要 UILabel 来显示上一个视图的分数。我该怎么做?

这是我的代码:

ViewController.h

@interface ViewController : UIViewController {

    IBOutlet UILabel *labelQuestion;
IBOutlet UILabel *labelAnswer1;
IBOutlet UILabel *labelAnswer2;
IBOutlet UILabel *labelAnswer3;
IBOutlet UILabel *labelScore;

int score;    

}

@property (nonatomic, retain) IBOutlet UILabel *labelScore;
@property (nonatomic) int score;


ViewController.m

@synthesize labelScore;
@synthesize score;

-(IBAction)CorrectAnswer; {

    score = score +1;
    labelScore.text = [NSString stringWithFormat:@"%i", score];

}

-(IBAction)WrongAnswer; {

    score = score -1;
    labelScore.text = [NSString stringWithFormat:@"%i", score];

}

【问题讨论】:

  • 您想在应用启动之间保留分数,还是在应用运行时保留分数?
  • 应用运行时。
  • 你是如何解决这个问题的?我期待您的来信。

标签: iphone xcode view label uilabel


【解决方案1】:

使变量 score 全局化,即在您的 AppDelegate 中定义它,您可以在整个应用程序中访问它。

【讨论】:

  • 很抱歉成为菜鸟,但你是怎么做到的?
  • 首先,我们在 AppDelegate 中定义我们的变量。然后,我们要在其中访问该变量的类,首先我们创建一个 AppDelegate 实例,然后通过该实例访问我们的变量。该变量将在整个应用程序中保留其值。
  • 您能再解释一下吗?这听起来像是我想要的解决方案。假设我在 AppDelegate 中有一个我想要在其他三个视图中的标签。我的分数标签名为 labelPoang,我的三个视图名为 FragaViewController、Fraga2ViewController 和 Fraga3ViewController。我是否必须在 AppDelegate 和三个视图的 H 和 M 文件中添加代码?我真的很感谢你的帮助。我需要为标签设置属性吗?
  • 您必须在各自的视图中添加标签...但是您要在这3个标签中显示的分数变量需要在AppDelegate中定义。在 viewdidload 中创建 appDelegate 的实例 app = [[UIApplication sharedApplication]delegate];现在可以随心所欲地访问 app.score。
【解决方案2】:

最快但肮脏的方法是将其存储在应用程序委托中。如果您希望它在应用程序启动之间持续存在,请将其存储在用户默认值中。 但正如我所说,这很脏..

【讨论】:

    【解决方案3】:

    由于它们是属性,当您创建下一个视图时,您可以将标签的文本设置为当前视图的文本,并将分数设置为当前视图的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多