代码之家  ›  专栏  ›  技术社区  ›  Pugalmuni Tom Tharakan

如何在iPhone的按钮中保持选中的状态

  •  2
  • Pugalmuni Tom Tharakan  · 技术社区  · 14 年前

    滚动视图中有三个按钮,

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

    单击第一个按钮并将背景图像设置为选定状态,然后单击第二个按钮,将取消选择第一个按钮。所以我怎样才能保持选中的状态,直到点击另一个按钮。

    提前谢谢。

    1 回复  |  直到 14 年前
        1
  •  4
  •   kovpas    14 年前

    我用以下方法解决了这个问题:

    初始化方法:

    • 为正常和选定状态创建具有已定义图像的按钮数。
    • 为每个按钮指定标记(例如,第i个按钮标记为1000+i)。

    动作方法:

    • 选择发件人。

    代码如下:

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