2012-01-26 7 views
0

lMenu_time(これはUILabelです)のテキストを最初に設定した後で変更できません。 コールバックが実行されましたが、これをテストしましたが、テキストは変更されません。 ??ポインタを回してUILabelを調整しています。 ??UILabelのテキストは変更されませんか?

lMenu_timeとその他多数のヘッダファイルが定義されています。あなたのコンソール出力が「私のラベルがある場合は、次を設定しようとする直前に

UILabel *lMenu_time; 

...

-(void) NewNumber: (UIButton*) btn {  
    if (btn.tag == 102){ 
     iTime++; 
     [lbl setText:@"time"]; 
     if(iTime > 20){iTime=1;} 
     [lMenu_time setText:[NSString stringWithFormat: @"Hold: %d", iTime]]; 
    } 
    .... 
} 


- (void) menuItem: (UIView*)vMenu menuButton:(UIButton*)bMenu menuLabel: (UILabel*)lMenu menuPosX: (double)posX menuLenX: (double)lenX menuTagNum: (int)tagNum menuText: (NSString*)txtMenu{   
    bMenu = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [bMenu setFrame:CGRectMake(posX,0,lenX,25)]; 
    [bMenu setTag: tagNum]; 
    [bMenu addTarget:self action:@selector(NewNumber:) forControlEvents:UIControlEventTouchUpInside]; 
    [vMenu addSubview:bMenu]; 


    lMenu = [[[UILabel alloc] initWithFrame:CGRectMake(posX,0,lenX,25)] retain]; 
    [lMenu setBackgroundColor:[UIColor lightGrayColor]]; 
    [lMenu setText:[NSString stringWithFormat: txtMenu]]; 
    [lMenu setFont:[UIFont systemFontOfSize:14 ]]; 
    [lMenu setTextAlignment:UITextAlignmentCenter]; 
    [vMenu addSubview: lMenu]; 
} 

- (void) menuBuild{ 
    pSelf = self; 
    theString = @""; 


    UIView *vMenu = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,25)]; 
    [pSelf.view addSubview:vMenu]; 
    [vMenu setBackgroundColor:[UIColor grayColor]]; 


    iTime = 2; 
    [self menuItem:vMenu menuButton:bMenu_time menuLabel:lMenu_time menuPosX:240+20 menuLenX:60 menuTagNum:102 menuText:[NSString stringWithFormat: @"Hold: %d", iTime]]; 

    ...  
} 

答えて

0

を(ここでは見ていない)、そして、

NSLog(@"My label is %@",lMenu_time); 

を追加してみてください(nil) "の場合、lMenu_timeへのポインタが正しく渡されていないという問題があることがわかります。

+0

私はそれがゼロであることを実感します。なぜそれがnullであるか分かりません。なぜそれが...私はUILabel "alloc"を行ったにもかかわらず、私は "保持"を行う必要がありますか? – jdl

+0

lMenu_timeはView Controllerの '@ property'ですか? – Tim

+0

コードから、そこにラベルを生成したことがわかります。 – jdl

0

Interface Builderのコントローラにラベルオブジェクトをバインドしましたか?もしそうでなければ、これは留保問題であると確信しています。あなたはUILabelオブジェクトを構築するコードを投稿しないので、IBで実行されていない場合は、retainを呼び出すようにしてください。そうしないと、試して修正しようとすると範囲外になることがあります。

+0

"menuItem"というメソッドがUILabelオブジェクトのコードを表示します – jdl

+0

当時の問題かもしれません。これまでコントロールを初期化していますか?このメソッドのどこにも、 "lMenu_time"が参照されたり、触れられたりしていません。そこには "lMenu"がありますが、 "lMenu_time"はありません。 – MystikSpiral

+0

はい、初期化されます。そして私はUILabelの初期化テキストを見ます。コールバックの更新だけではありません。 – jdl

関連する問題