0

我是 ios 的新手。我有一个 viewController,其中有一个通知观察者。例如

-(void) myNotificationObFn:(Notification *)noti
{
  /* Here i am trying to change the text of UILabel, which is not working. 
  ie:
    NSString *ns = [NSString stringWithFormat:@"%d", 10];
    mylabel.text = ns;
  */
}

我该如何解决这个问题?

4

3 回答 3

3
-(void) myNotificationObFn:(Notification *)noti
{
    dispatch_sync(dispatch_get_main_queue(), ^{
        NSString *ns = [NSString stringWithFormat:@"%d", 10];
        labelfromtag.text = ns;
        [labelfromtag setNeedDisplay];
   });
}
于 2012-09-07T08:43:28.773 回答
1

如果要更改标签,请尝试使用标签功能

例子 :

如果您以编程方式创建标签,请在第一次创建标签后设置标签的标签

UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 50)];
[myLabel setTag:1234];

如果您在 XIB 或情节提要中创建标签,只需更改“标签”字段

这样,您的标签就会得到标签“1234”

在此之后,如果您需要编辑此标签,请在您的通知方法中输入此代码

UILabel *labelfromtag = (UILabel*)[self.view viewWithTag:1234]; //this code direct label "labelfromtag" to your "myLabel", so your new label here is actually your old label
NSString *ns = [[NSString alloc] initWithFormat:@"%d", 10];

labelfromtag.text = ns;

祝你好运 :]

编辑:此外,此通知是否与您的 UILabel 位于同一类/控制器中?

于 2012-05-10T03:24:53.180 回答
0

1 - 您的标签在 IB 中是否正确连接?您可以在代码中的其他地方更改文本(例如 viewDidLoad)吗?

2 - 您不需要分配字符串,因为您没有将其保留在此方法的范围之外。你可以这样做:

[myLabel setText:[NSString stringWithFormat:@"%d",10]];
于 2012-05-10T03:16:26.620 回答