2013-02-26 125 views
0

我已經寫了一些代碼,這取決於選擇哪一個來切換2個按鈕。如果選擇了英國的​​話,它會變成勾號,無線電通信協議會變成未加密的,反之亦然。但是,這似乎只適用於英國按鈕。如果我選擇了BR按鈕而不是UK按鈕,BR按鈕會短暫地打勾,但隨後會再次打開。UIButton圖像只改變一個按鈕

我已經正確地鏈接了我的按鈕(我有三重檢查),並且BR按鈕短暫地勾選它肯定是連接起來的。我使用的代碼如下:

.H

@property (weak) IBOutlet UIButton *btUK; 
@property (weak) IBOutlet UIButton *btBR; 

.M

- (IBAction)changePortal:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 

    if (button.tag == kUKButton) 
    { 
     self.btUK.imageView.image = [UIImage imageNamed:@"tick_box.png"]; 
     self.btBR.imageView.image = [UIImage imageNamed:@"tick_box_empty.png"]; 
     [Singleton sharedSingleton].bUseUKPortal = YES; 
    } 
    else if (button.tag == kBRButton) 
    { 
     self.btBR.imageView.image = [UIImage imageNamed:@"tick_box.png"]; 
     self.btUK.imageView.image = [UIImage imageNamed:@"tick_box_empty.png"]; 
     [Singleton sharedSingleton].bUseUKPortal = NO; 
    } 
} 

我已經在代碼中設置斷點,並已證實,這兩個按鈕去在點擊時進入相關部分。我也可以確認沒有其他代碼正在使用btUK和btBR變量,因爲我剛剛寫完了這些變量。

兩個按鈕都將changePortal設置爲其操作,並且該功能僅在每次單擊時調用一次。

我也嘗試清洗代碼,但這並沒有解決我的問題。

如果任何人都可以解釋爲什麼會發生這種情況,那麼我將非常感激。

回答

2

設置UIButton圖像的正確方法是致電setImage:forState:。 因此,嘗試改變你的代碼是這樣的:

// Follow this pattern for every button image change 
[self.btUK setImage:[UIImage imageNamed:@"tick_box.png"] forState:UIControlStateNormal]; 


現在關於 imageView財產 documentation指出:

按鈕的圖像視圖。雖然這個屬性是隻讀的,其自有財產 讀/寫(只讀)

@property(nonatomic, readonly, retain) UIImageView *imageView 

討論

。使用這些屬性來配置按鈕視圖的外觀和行爲。例如:

UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect]; 
button.imageView.exclusiveTouch = YES; 

的ImageView的屬性返回即使按鈕沒有被顯示 又一個值。系統按鈕的屬性值爲零。

+0

工作完美,謝謝。我假設英國的一個運作正常,代碼是正確的。謝謝 – 2013-02-26 12:57:59