2015-07-01 132 views
1

我有一個關於酒吧按鈕項目的問題,而我的問題是我創建了4個酒吧按鈕項目按鈕,但我無法爲它們設置標籤。這裏是我的代碼:UIBarButtonItem設置標籤

for(int i=0;i<numeroDeSubMenus;i++){ 

    //Create the button 
    barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleDone target:self action:@selector(setUrl)]; 
    barButtonItem.image = [self imageWithImage:imageSubMenu scaledToSize:CGSizeMake(60, 60)]; 
    // button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    // [button setImage:imageSubMenu forState:UIControlStateNormal]; 

    for (NSString *titulos in arrayNomesSubMenu) { 

     barButtonItem.title = titulos; 
    } 

    // barButtonItem= [[UIBarButtonItem alloc] 
    //     initWithCustomView:button]; 

    // barButtonItem.image = [self imageWithImage:imageSubMenu scaledToSize:CGSizeMake(60, 60)]; 
    NSLog(@"%@",[barButtonItem description]); 
    [numberofbuttons addObject:barButtonItem]; 

} 
for (int tag = 0; tag < numeroDeSubMenus; tag ++) { 
    [barButtonItem setTag:tag]; 
} 

[toolBar setItems:numberofbuttons]; 
// toolBar.items = numberofbuttons; 
toolBar.translucent = NO; 

numeroDeSubMenus = 4(按鈕)

當我運行它,它讓我看到4個按鈕,但標籤是一樣的,它是最後一個數字(3) 。我怎樣才能把每個按鈕的標籤?

這是按鈕的動作,它表示要去哪裏以及點擊每個按鈕。

- (void)setUrl 
{ 
    if (barButtonItem.tag == 0) { 

     NSLog(@"1ºbutao"); 
    } 
    if (barButtonItem.tag == 1) { 

     NSLog(@"2ºbutao"); 
    } 
    if (barButtonItem.tag == 2) { 

     NSLog(@"3ºbutao"); 
    } 
    if (barButtonItem.tag == 3) { 

     NSLog(@"4ºbutao"); 
    } 
} 

回答

0

您每次都將標籤分配給同一個按鈕實例。試試這個:

- (IBAction)setUrl:(UIBarButtonItem *)button { 
    NSLog(@"%i", button.tag); 
} 

即時猜測你有一個實例變量barButtonItem和一個將只持有,因爲這就是最後一個引用了一句:接收點擊行動,這

for(int i=0;i<numeroDeSubMenus;i++){ 

    //Create the button 
    barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleDone target:self action:@selector(setUrl:)]; 
    [barButtonItem setTag:i]; 
    barButtonItem.image = [self imageWithImage:imageSubMenu scaledToSize:CGSizeMake(60, 60)]; 
    // button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    //[button setImage:imageSubMenu forState:UIControlStateNormal]; 


    for (NSString *titulos in arrayNomesSubMenu) { 

     barButtonItem.title = titulos; 

    } 

    // barButtonItem= [[UIBarButtonItem alloc] 
       //  initWithCustomView:button]; 

    // barButtonItem.image = [self imageWithImage:imageSubMenu scaledToSize:CGSizeMake(60, 60)]; 
    NSLog(@"%@",[barButtonItem description]); 
    [numberofbuttons addObject:barButtonItem]; 
} 



[toolBar setItems:numberofbuttons]; 
//toolBar.items = numberofbuttons; 
toolBar.translucent = NO; 

確定來更改你的方法你在循環中分配給它。其他按鈕只在你的數組和實際的導航欄中。

+0

嗨,謝謝你的回答,但已經嘗試過了,仍然一樣。我forgott以顯示的行動方法: - (void)setUrl {012BIKEYTEM.TAG == 0 { NSLog(@「1ºbutao」); } if(barButtonItem.tag == 1){ NSLog(@「2ºbutao」); } if(barButtonItem.tag == 2){ NSLog(@「3ºbutao」); } if(barButtonItem.tag == 3){ NSLog(@「4ºbutao」); } }當我按下按鈕,它說的相同,「按鈕nº4」,這是我的日誌 –

+0

試試這個。請注意,我還在按鈕的初始化中向選擇器添加了一個「:」。 –

+0

嗨,隊友,感謝您的幫助已經解決了這個問題。和我分享的代碼,如果有人有同樣的問題 –

0

不需要2個循環。你的一些代碼是錯誤的。

for(int i=0;i<numeroDeSubMenus;i++){ 

    //Create the button 
    barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleDone target:self action:@selector(setUrl)]; 
    barButtonItem.image = [self imageWithImage:imageSubMenu scaledToSize:CGSizeMake(60, 60)]; 
    // button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    //[button setImage:imageSubMenu forState:UIControlStateNormal]; 


    for (NSString *titulos in arrayNomesSubMenu) { 

     barButtonItem.title = titulos; 

    } 

    // barButtonItem= [[UIBarButtonItem alloc] 
      //  initWithCustomView:button]; 

    // barButtonItem.image = [self imageWithImage:imageSubMenu scaledToSize:CGSizeMake(60, 60)]; 
    [barButtonItem setTag:i]; 
    NSLog(@"%@",[barButtonItem description]); 
    [numberofbuttons addObject:barButtonItem]; 

} 
+0

已經嘗試,這就是爲什麼我分開,並仍然給我同樣的想法,所有的按鈕都得到相同的標記 –

+0

如何獲得按鈕標籤?你能給這個代碼嗎? – DharaParekh

+0

已經編輯我的話題,我把每個按鈕的動作方法,當我運行應用程序,當我點擊按鈕它說「4ºbuttao」其平均4º按鈕 –

0

我已經解決了這一問題,因爲你可以在代碼中看到,動作的方法:我必須更換

- (void)setUrl 

- (void)setUrl:(UIBarButtonItem*) sender 

,並改變所有if語句爲:

if (sender.tag == 0) { 

...

,當我創建按鈕

 barButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleDone target:self action:@selector(setUrl:)]; 

我必須改變:action:@selector(setUrl:)

感謝。