2

スクロールビューを作成し、ボタンがスクロールビューにあるように設定しました。ボタンは水平方向にスクロールしていて、正常に機能します。ボタンをクリックすると、ボタンの背景画像が「選択状態」に設定されます。私の問題は、別のボタンをクリックしたときに選択した状態を変更するにはどうすればよいですか。また、別のボタンをクリックしたときに「選択した状態」ボタンの選択を解除するにはどうすればよいですか。

スクロールビューに3つのボタンがあります。

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

 }

下の画像を参照してください(ヘルス、エンターテインメント、マネーウォッチは3つのボタンです)

画像http://www.freeimagehosting.net/uploads/6b3daab12f.png

Img http://www.freeimagehosting.net/uploads/b6e0f234dc.png

注:(のように、タブバーとセグメント化されたコントロール)

最初のボタンをクリックして背景画像を選択状態に設定し、2番目のボタンをクリックすると、最初のボタンの選択が解除されます。では、別のボタンがクリックされるまで、選択した状態を維持するにはどうすればよいですか。

前もって感謝します。

4

1 に答える 1

4

このタスクを次の方法で解決しました。

初期化方法:

  • 通常状態と選択状態のイメージが定義された多数のボタンを作成します。
  • 各ボタンにタグを割り当てます (たとえば、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;
}
于 2010-07-16T13:03:58.337 に答える