我怎样才能保持按钮在iPhone中的选定状态

问题描述:

我已经创建了滚动视图,并设置按钮在滚动视图。按钮水平滚动,它工作正常。如果我点击了按钮,我将按钮中的背景图像设置为“Selected State”。我的问题是,如何在不同的按钮中更改选定状态,单击时它又如何取消选中“选中状态”按钮。我怎样才能保持按钮在iPhone中的选定状态

我在滚动视图三个按钮,

-(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

注意:(Like,Tabbar和Segmented控件)

单击第一个按钮并将背景图像设置为选定状态并单击第二个按钮时,将取消选择第一个按钮。那么我如何维持选定的状态,直到另一个按钮被点击。

在此先感谢。

我通过以下方式解决了这一任务:

init方法:

  • 创建按钮具有用于正常和选择状态定义的图像数目。
  • 为每个按钮分配标签(例如,对于第i个按钮标签是1000 + i)。
  • 为每个按钮分配IBAction。

动作方法:从预先选择的按钮

  • 删除选择(搜索它通过它与[视图viewWithTag:]标记方法)
  • 选择发送者。
  • 保存发件人的标签。

下面的代码:

- (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; 
} 
+1

+1,kovpas,感谢您详细的解答。它工作正常。非常感谢... – Pugal 2010-07-17 17:57:49