在我的应用程序中,我在滚动视图中创建了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;
//.....
//.....
}
如果这样做,那么只有动态创建的最后一个按钮才会突出显示。这不完全是我想要的。
答案 0 :(得分:1)
我认为您应该替换按下按钮的当前代码:
-(IBAction)buttonpressed:(id)sender{
UIButton *b = (UIButton *)sender;
b.highlighted = YES;
//.....
//.....
}
在您的示例中,您特别突出显示" AButton "。此代码突出显示按下的按钮。
答案 1 :(得分:0)
解决方案1:
创建一个NSSet
,其中包含对所有按钮的引用。在buttonPressed
方法中,在NSSet的按钮上调用makeObjectsPerformSelector
,将它们设置为未突出显示的状态。
解决方案2: 使用UISegmentedControl。这似乎就像你应该在这种情况下做的那样。