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;

幸運を :]

edit : また、この通知は ur UILabel と同じクラス/コントローラーにありますか?

于 2012-05-10T03:24:53.180 に答える
0

1 - IB でラベルが適切に接続されていますか? コード内の別の場所でテキストを変更できますか (たとえば、viewDidLoad など)。

2 - このメソッドの範囲外に文字列を保持していないため、文字列を割り当てる必要はありません。あなたはただ行うことができます:

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