2012-02-15 12 views
1

我想要做的是,當我點擊按鈕,一旦它應該被突出顯示(我加載圖像顯示突出顯示的效果),當我點擊按鈕再次(第二次)它應該刪除突出顯示的圖像並添加一個正常的圖像。它還應該添加元素並將其移除到Mutable Array。如何檢測按鈕點擊 - 提供的邏輯錯誤代碼

但是,發生的是,當我點擊(一次或幾次)它只添加圖像,並沒有刪除任何。幫助

代碼 我正在添加一個按鈕; 的低於2線被放置在viewDidLoad方法

UIButton *but= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    // then i set the size etc, and do the following 

     [but addTarget:self action:@selector(butclick:) forControlEvents:UIControlEventTouchUpInside]; 

    -(void)butclick:(id)sender{ 

     if([sender isSelected]==NO) { 
      [sender setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateNormal]; 
      [sender setSelected:YES]; 

      [self.mutArry addObject:[sender titleForState:UIControlStateSelected]]; 

     } else { 
      [sender setBackgroundImage:[UIImage imageNamed:@"nothighlighter.png"] forState:UIControlStateNormal]; 
      [sender setSelected:NO]; 
      [self.mutArry removeObject:[sender titleForState:UIControlStateSelected]]; 

     } 

} 
+0

你的意思是「它只添加圖像,並沒有刪除任何」? – sch 2012-02-15 00:42:20

+0

當我第二次點擊按鈕時,它仍然處於高亮顯示狀態(如Highlight.png中)並且不執行else塊。 – Illep 2012-02-15 00:57:39

回答

0

ü可能希望使用BOOL(如標誌)用它代替使用高亮想法。

每次按鍵都會切換,並根據其值執行您的操作,它會一直添加一個值並在下次按下時刪除一個值。第一個是根據該標誌的初始值是什麼。

if (flag) 
    { 
    //add your object and set to highlight 
     flag = NO; 
    }else 
    { 
     flag = yes; 
     //remove object and set to not highlighted 
    } 

設置標誌時,當它被發現真實的沒有,並且是當它被發現的假。保證了它會不斷地改變

+0

您能否給我示例一個例子? – Illep 2012-02-15 00:56:17

+0

我更新了我的博文,並帶有代碼的想法。我的意思是要突出顯示是要改變你的形象。 – 2012-02-15 01:07:00

+0

Ehab建議您在頭部創建一個BOOL(boolean)變量,以便您可以確定該按鈕何時已加載圖像或否。所以基本的邏輯就是,在你的按鈕方法中,你可以用IF語句添加BOOL。如果BOOL爲YES,請執行以下操作:附加圖像,然後將BOOL設置爲「NO」,以便下次按下該按鈕時,它將檢測到BOOL爲NO,因此執行不同的操作,它將刪除圖像並將BOOL重新設置爲YES) – 2012-02-15 07:26:28

0

具有以下屬性定義,並在該類

BOOL selected; 
在viewDidLoad中

合成,設定是假

self.selected = NO; 

現在做到以下幾點:

-(void)butclick:(id)sender{ 

    if(!self.selected) { 
     [sender setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateNormal]; 
     self.selected = YES; 

     [self.mutArry addObject:[sender titleForState:UIControlStateSelected]]; 

    } else { 
     [sender setBackgroundImage:[UIImage imageNamed:@"nothighlighter.png"] forState:UIControlStateNormal]; 
     self.selected = NO; 
     [self.mutArry removeObject:[sender titleForState:UIControlStateSelected]]; 

    } 

}