2012-01-26 19 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); 

然後,如果您的控制檯輸出「我的標籤(無)「您會知道問題是指向lMenu_time的指針未被正確傳遞。

+0

我意識到它是零。不知道爲什麼它是空的。不知道它爲什麼是...即使我做了UILabel「alloc」,我是否需要做一個「保留」? – jdl

+0

lMenu_time是視圖控制器的'@屬性'嗎? – Tim

+0

從代碼中你可以看到我在那裏生成了標籤。 – jdl

0

您是否將標籤對象綁定到了界面構建器中的控制器?如果不是,我會打賭這是一個保留問題。您不會發布構建UILabel對象的代碼,因此如果這不是在IB中完成的,請確保您調用retain,否則在嘗試修改它時它肯定會超出範圍。

+0

稱爲「menuItem」的方法顯示UILabel對象前面的代碼 – jdl

+0

可能是當時的問題。你是否曾經初始化控制?該方法中沒有任何地方引用或觸及「lMenu_time」。我在那裏看到「lMenu」,但不是「lMenu_time」。 – MystikSpiral

+0

是的,它被初始化。我在UILabel中看到初始化文本。只是沒有更新的回調。 – jdl