-1

我只想更改标签的文本。在那里,我有一个到 Xib 接口的 ViewController,在该接口中创建标签并链接到 ViewController。我只是创建了一个想要更改标签文本的视图控制器的实例:

NewFormScoreViewController * newPoints=[[NewFormScoreViewController alloc] init];
[newPoints.TheNewScoreLabel setText:[NSString stringWithFormat:@"%i",newScore]];
[newPoints.view setFrame:CGRectMake(500, 500, newPoints.view.frame.size.width,  newPoints.view.frame.size.height)];
[self.view addSubview:newPoints.view];

视图是可见的,但只显示占位符,而不是新字符串。[NSString stringWithFormat:@"%i",newScore] 返回了需要的String,但是好像传输不起作用。但为什么?怎么了?

4

5 回答 5

1

在一个stringWithFormat:方法中,如果你的变量是一个int,使用%d,如果它是一个浮点数%f,,%@forNSString或其他类型。

于 2013-07-18T12:05:32.017 回答
0

Your code is ok.

But the class is a black box. Is this storyboard, nib file or manual implementation?

Is the pointer for the label object actally stored in the ivar?

于 2013-07-18T12:51:57.603 回答
0

用这个...

[newPoints.TheNewScoreLabel setText:newScore];
于 2013-07-18T12:01:31.303 回答
0

你没有提到任何关于“从哪里”改变你的UILabel. 如果您只是想UILabel从同一个视图控制器更改值,那么您可以这样做:

yourLabel.text = [NSString stringWithFormat:@"%d",newScore];

但是,如果您想从其他值更改值,UIViewController则有两种可能性。您可以向前和向后传递数据。

在这种情况下,您应该参考:在视图控制器之间传递数据

于 2013-07-18T12:15:37.363 回答
0

您可以使用

[newPoints.TheNewScoreLabel setText:newScore];

或者

[newPoints.TheNewScoreLabel setText:[NSString stringWithFormat:@"%d",newScore]];

代替

[newPoints.TheNewScoreLabel setText:[NSString stringWithFormat:@"%i",newScore]];

因为

%d 将整数扫描为带符号的十进制数,但%i允许默认为十进制,但也允许十六进制(如果前面有“0x”)和八进制(如果前面有“0”)。

于 2013-07-18T12:34:39.650 回答