2011-12-17 90 views
1

在我的應用程序中,我在滾動視圖中創建了20個按鈕,現在的問題是我無法突出顯示所選按鈕。突出顯示動態創建的UIButtons?

我的目的是顯示與正常不同的外觀按下按鈕。當按下另一個按鈕上一個應該成爲常態:

UIButton *Abutton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain]; 
    [Abutton setTag:i-1]; 
    Abutton.frame = CGRectMake(30.0, 0+j, 40.0, 40.0); 
    [Abutton setTitle:@"" forState:UIControlStateNormal]; 
    Abutton.backgroundColor = [UIColor clearColor]; 
    [Abutton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal ]; 
    UIImage *buttonImageNormal = [UIImage imageNamed:@"image1.png"]; 
    UIImage *strechableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0]; 
    [Abutton setBackgroundImage:strechableButtonImageNormal forState:UIControlStateNormal]; 
    UIImage *buttonImagePressed = [UIImage imageNamed:@"image2.png"]; 
    UIImage *strechableButtonImagePressed = [buttonImagePressed stretchableImageWithLeftCapWidth:12 topCapHeight:0]; 
    [Abutton setBackgroundImage:strechableButtonImagePressed forState:UIControlStateHighlighted]; 
    [Abutton addTarget:self action:@selector(buttonpressed:) forControlEvents:UIControlEventTouchUpInside]; 

    [scrollview addSubview:Abutton]; 

最後我創造了A按鈕的方法按如下:

-(IBAction)buttonpressed:(id)sender{ 
     Abutton.highlighted=YES; 
     //..... 
     //..... 
} 

如果不喜歡它創造了這個則只有最後一個按鈕動態獲取突出顯示。這不完全是我想要的。

回答

0

解決方案1: 創建一個NSSet並引用所有按鈕。在您的buttonPressed方法中,在NSSet的按鈕上調用makeObjectsPerformSelector,將它們設置爲未加亮狀態。

解決方案2: 使用UISegmentedControl。這似乎是你應該無論如何在這種情況下。

+0

謝謝Ben,有沒有更好的使用NSSet的例子? – Satheesh 2011-12-18 05:54:20

1

我想你應該按下按鈕替換當前代碼:

-(IBAction)buttonpressed:(id)sender{ 
UIButton *b = (UIButton *)sender; 
      b.highlighted = YES; 
      //..... 
      //..... 
    } 

在你的榜樣,你是特別突出「A按鈕」。此代碼突出顯示正在按下的按鈕。