2013-06-28 18 views
0

我正在製作選項卡欄應用程序。我想禁用一個標籤欄按鈕,我可以通過代碼解開選項卡欄按鈕,但想要disababled標籤欄按鈕的enabeled圖像

[[[[[self tabBarController] viewControllers] objectAtIndex:2] tabBarItem] setEnabled:FALSE];

使但是圖像被禁用。我想要啓用圖像。如何通過代碼使用自定義圖像。我不想使用標籤欄按鈕的自定義圖像。我想使用默認選定的和未選擇的標籤欄按鈕圖像。請建議。

在此先感謝。

+0

也許你可以設置布爾值來知道啓用了哪個選項卡。並在委託'tabBar:didSelectItem:'測試那些布爾值。如果與選定選項卡對應的布爾值表示該選項未啓用,則只需執行'return;'即可退出委託。 – zbMax

+0

@zbMax - 但圖像更改爲未選擇的圖像..即使選項卡按鈕未啓用,我也希望所選圖像... – NiKKi

回答

0

您可以嘗試以下操作:將UIBarButtonItem切換爲禁用,而不是切換屬性,將tintColor屬性更改爲清除顏色。這將防止點擊時按鈕被着色。然後,在委託中,檢查按鈕是否被禁用,如果是,則返回:

// inside view controller .m 

-(void)disableButton 
{ 
    [barBtn setTintColor:[UIColor clearColor]]; 
} 

-(void)enableButton 
{ 
    [barBtn setTintColor:[UIColor grayColor]]; // whatever color the tint should be 
} 

-(void)buttonTapped:(id)sender 
{ 
    if ([barBtn tintColor] == [UIColor clearColor]) 
    { 
     return; // button is disabled, so don't to action 
    } 
} 
+0

我需要爲此創建一個類別? – NiKKi

+0

@NiKKi不;大概在你的視圖控制器的某個地方,你有一些導致按鈕被啓用/禁用的東西。這就是'enableButton' /'disableButton'函數。 'buttonTapped:'是被點擊的實際標籤欄按鈕的回調。 'barBtn'是'UIBarButtonItem',它是實際的標籤欄按鈕。我已經稍微修改了代碼以更清晰 – Turch

+0

@NiKKi,'barBtn'已經具有'tintColor'屬性。 – Turch