2 Stimmen

Wie kann ich den ausgewählten Zustand einer Schaltfläche auf dem iPhone beibehalten?

Ich habe eine Bildlaufansicht erstellt und setze die Schaltflächen in die Bildlaufansicht. Die Schaltflächen sind horizontal scrollen und es funktioniert gut. Wenn ich die Schaltfläche angeklickt habe, habe ich das Hintergrundbild als "Ausgewählter Zustand" in der Schaltfläche festgelegt. Mein Problem ist, wie kann ich den ausgewählten Zustand in verschiedenen Schaltflächen ändern, wenn ich darauf klicke, und wie kann ich die Schaltfläche "ausgewählter Zustand" abwählen, wenn ich auf eine andere Schaltfläche klicke.

Ich habe drei Schaltflächen in der Bildlaufansicht,

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

 }

siehe das folgende Bild (Gesundheit, Unterhaltung und Geldüberwachung sind die drei Schaltflächen)

Bild http://www.freeimagehosting.net/uploads/6b3daab12f.png

y

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

Anmerkung: (Wie, Tabbar und Segmented Control)

Wenn ich auf die erste Schaltfläche klicke und das Hintergrundbild in den ausgewählten Zustand versetze und dann auf die zweite Schaltfläche klicke, sollen die ersten Schaltflächen abgewählt werden. Wie kann ich also den ausgewählten Zustand beibehalten, bis eine andere Schaltfläche angeklickt wird.

Vielen Dank im Voraus.

4voto

kovpas Punkte 9675

Ich habe diese Aufgabe auf folgende Weise gelöst:

init-Methode:

  • Erstellen Sie eine Reihe von Schaltflächen mit definierten Bildern für den normalen und den ausgewählten Zustand.
  • Weisen Sie jeder Schaltfläche eine Markierung zu (z. B. für die i-te Schaltfläche die Markierung 1000+i).
  • Weisen Sie jeder Schaltfläche eine IBAction zu.

Aktionsmethode:

  • Entfernen Sie die Auswahl von der zuvor ausgewählten Schaltfläche (suchen Sie sie anhand ihres Tags mit der Methode [view viewWithTag:])
  • Absender auswählen.
  • Tag des Absenders speichern.

Hier ist der Code:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X