突出显示动态创建的UIButtons?

时间:2011-12-17 09:52:49

标签: ios ipad uiscrollview uibutton ios-simulator

在我的应用程序中,我在滚动视图中创建了20个按钮,现在问题是我无法突出显示所选按钮。

我的目的是显示按下的按钮,其外观与正常情况不同。当按下另一个按钮时,前一个按钮应该变为正常:

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];

最后我创建了按下Abutton的方法:

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

如果这样做,那么只有动态创建的最后一个按钮才会突出显示。这不完全是我想要的。

2 个答案:

答案 0 :(得分:1)

我认为您应该替换按下按钮的当前代码:

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

在您的示例中,您特别突出显示" AButton "。此代码突出显示按下的按钮。

答案 1 :(得分:0)

解决方案1: 创建一个NSSet,其中包含对所有按钮的引用。在buttonPressed方法中,在NSSet的按钮上调用makeObjectsPerformSelector,将它们设置为未突出显示的状态。

解决方案2: 使用UISegmentedControl。这似乎就像你应该在这种情况下做的那样。