【问题标题】:iPad - Why won't my label update?iPad - 为什么我的标签不会更新?
【发布时间】:2011-01-07 00:12:56
【问题描述】:

我有一个计时器正在运行,我希望它在每次计时都会更新我的分数。这是我的代码。它会初始化得很好,分数整数会更新,但标签永远不会从 0 开始更新。

    score = score+1;
scoreLabel.text = [NSString stringWithFormat:@"%d", score];
[scoreLabel setNeedsDisplay];

现在,上一个问题我得到了一个答案,提到 UI 更新只能在主线程上工作,所以现在它的设置如下:

-(void) updateGame:(NSTimer *)timer{
    [self performSelectorOnMainThread:@selector(updateScore) 
                           withObject:nil 
                        waitUntilDone:false];

}

但仍然没有运气。谁能指出我正确的方向?我以前没有遇到过这样的问题。

【问题讨论】:

  • scoreLabel 真的指向您的标签吗?您的代码似乎找到了。
  • 你检查过scoreLabel 不为零吗?如果是IBOutlet,请检查您是否已将其连接到 IB。
  • scoreLabel 确实指向它,我刚刚检查过。至少这就是我在设置它的视觉属性时所指的。
  • pgb,我正在代码中创建 scoreLabel。我在 M 文件的顶部声明它: UILabel* scoreLabel;然后我用...声明所有属性...哦,天哪,当我复制它时,我看到第一行是 UILabel *scoreLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];我删除了重复的 UILabel 并且它运行完美。感谢您让我检查我认为没问题的代码!

标签: iphone xcode ipad uilabel


【解决方案1】:

定时器通知是否来自不是主线程的线程?您无法从其他线程更新 UI。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多