2011-12-20 24 views
1

我正嘗試在Xcode4中爲iOS創建一個按鈕式按鈕,並帶有自定義圖像。 我正在使用的代碼是作爲開關的UIButton

- (IBAction)btnAll:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 
    button.selected = !button.selected; 
} 

,對於現在工作得很好。 但我的問題是,當我打開時,我按下它,然後再彈出,然後最終打開。 該應用程序的作品,但這真的很醜,但。

我首先將「高亮」圖像設置爲打開。所以當我突出顯示該按鈕時,它就會亮起,然後彈出。這工作正常。但是當我再次關閉它時,問題是相同的,反向。

我試圖把這些代碼:

- (IBAction)btnAll:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 
    if(button.selected) 
    { 
     [button setImage[UIImage [email protected]"off.png"] forState:UIControlStateHighlighted]; 
    } 
    else 
    { 
     [button setImage[UIImage [email protected]"on.png"] forState:UIControlStateHighlighted]; 
    } 
    button.selected = !button.selected; 
} 

但只要button.selected = !button.selected是沒有區別的。 所以它不會做任何改變。

我也嘗試觸發IBAction on»Touch Down«,但你可以想象這會是多麼的令人沮喪。

有沒有人有解決這個問題? 有沒有人與那一個鬥爭?

映入眼簾,非常感謝 朱利安

回答

2

我有一個類似的問題在此之前,當敲擊按鍵的作用有點詭異。試試這個代碼,讓當你點擊並按住一個按鈕的狀態實際上是突出&選擇,所以你需要兩個亮點和選擇狀態的圖像我知道,如果它的工作原理

UIButton *button = (UIButton *)sender; 
    if(button.selected) 
    { 
     [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateHighlighted]; 
     [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateSelected]; 
     [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateHighlighted | UIControlStateSelected]; 
    } 
    else 
    { 
     [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateHighlighted]; 
     [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateSelected]; 
     [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateHighlighted | UIControlStateSelected]; 
    } 
    button.selected = !button.selected; 

    If (button.selected) { 
     [button setImage:[UIImage imageNamed:@"on.png"] forState:UIControlStateNormal]; 
    } else { 
     [button setImage:[UIImage imageNamed:@"off.png"] forState:UIControlStateNormal]; 
    } 

3

不要手動切換周圍的圖像,只需設置所選國家在Interface Builder圖像和交換selected財產當按鈕被竊聽了。

+1

在高亮顯示時,也可以停止調整圖像的按鈕,因爲在這種情況下不需要此按鈕。 – jrturton 2011-12-20 06:20:21

+0

正如你可以在我的文章中看到的,我只是嘗試這個作爲我原來的問題的解決方案。所以主要問題仍然存在。我剛剛認識到,當我點擊按鈕很短時,突出顯示的圖像消失,原始關閉狀態圖像再次顯示,然後彈出到「選定」狀態。它接縫太慢... – 2011-12-20 07:35:14

+0

[示例視頻。](https://files.me.com/julianweinert/xpa7rt)它在原始iPhone硬件上看起來是一樣的。 – 2011-12-20 07:52:04

0

同意吉姆,你的代碼需要如下稍加修改...

[button setImage[UIImage [email protected]"off.png"] forState:UIControlStateNormal]; 
[button setImage[UIImage [email protected]"on.png"] forState:UIControlStateSelected]; 
+2

看起來不贊同@jim。你不需要交換圖像。 – XJones 2011-12-20 06:32:22

+0

@XJones:謝謝,我的錯!我已經相應地更改了示例代碼。 – 2011-12-20 07:57:58

0

創建了兩個按鈕。

將按鈕放置在上方一個。

可以設置默認值&使用設計構建器中的自定義按鈕選項選擇圖像。

-(void)firstButtonClicked { 

firstButton.hidden = YES; 
secondButton.hidden = NO; 

} 

-(void)secondButtonClicked { 

firstButton.hidden = NO; 
secondButton.hidden = YES; 

}