【问题标题】:How can i maintain the selected state in button in iPhone如何在 iPhone 的按钮中保持选定状态
【发布时间】:2010-07-16 11:46:08
【问题描述】:

我创建了滚动视图并将按钮设置在滚动视图中。按钮水平滚动并且工作正常。如果我单击按钮,我将背景图像设置为按钮中的“选定状态”。我的问题是如何更改不同按钮中的选定状态,单击它时如何更改单击另一个按钮时的“选定状态”按钮。

我在滚动视图中有三个按钮,

 -(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控件)

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

提前致谢。

【问题讨论】:

    标签: iphone uibutton state selected


    【解决方案1】:

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

    初始化方法:

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

    动作方法:

    • 从先前选择的按钮中删除选择(使用 [view 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;
    }
    

    【讨论】:

      猜你喜欢
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多