我创建了滚动视图,并将按钮设置在滚动视图中。按钮水平滚动,工作正常。如果我单击按钮,我将背景图像设置为按钮中的“选定状态”。我的问题是如何在点击它时更改不同按钮中的选定状态,以及如何在单击另一个按钮时取消选择“选择状态”按钮。
滚动视图中有三个按钮,
-(IBAction) Button1 : (id) sender
{
// btn1.selected = YES;
[btn1 setImage:[UIImage imageNamed:@"first.png"] forState:UIControlStateSelected];
}
-(IBAction) Button2 : (id) sender
{
// btn2.selected = YES;
[btn2 setImage:[UIImage imageNamed:@"second.png"] forState:UIControlStateSelected];
}
-(IBAction) Button3 : (id) sender
{
// btn3.selected = YES;
[btn3 setImage:[UIImage imageNamed:@"three.png"] forState:UIControlStateSelected];
}
见下图,(健康,娱乐和金钱观察是三个按钮)
Image http://www.freeimagehosting.net/uploads/6b3daab12f.png
和
Img http://www.freeimagehosting.net/uploads/b6e0f234dc.png
注意:(比如,Tabbar和分段控件)
单击第一个按钮并将背景图像设置为选定状态并单击第二个按钮,然后取消选择第一个按钮。那么如何保持所选状态,直到点击另一个按钮。
先谢谢。
答案 0 :(得分:4)
我通过以下方式解决了这个问题:
init方法:
行动方法:
以下是代码:
- (void)init {
....INITIALIZE SCROLLVIEW HERE.....
for ( int i = 0; i < 10; i++ ) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setFrame:.....];
[btn setImage:_IMAGE_ forState:UIControlStateNormal];
[btn setImage:_IMAGE2_ forState:UIControlStateSelected];
[btn setTag:i + 1000];
[btn addTarget:self action:@selector(setSelectedButton:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:btn];
}
}
- (IBAction)setSelectedButton:(id)sender {
[self setSelectedButtonByIndex:((UIButton *)sender).tag - 1000];
}
- (void)setSelectedButtonByIndex:(NSInteger)index {
if ( selectedElemId >= 0 ) {
UIButton *btn = (UIButton *)[self viewWithTag:selectedElemId + 1000];
[btn setSelected:NO];
}
UIButton *btn = (UIButton *)[self viewWithTag:index + 1000];
[btn setSelected:YES];
selectedElemId = btn.tag - 1000;
}