UIButton nach Betätigung weiterhin selected

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIButton nach Betätigung weiterhin selected

    Hallo,

    ich habe über den IB einen Rounded Rect Button angelegt.

    Wenn ich den Button betätigt wird die passende Methode ausgewählt.

    Der Button wird nur so lange selected wie ich ihn auch berühre.
    Das dürfte der Normalfall sein.


    Wie bekomme ich es jetzt hin dass er weiterhin als selected angezeigt wird?


    Ich will im Zusammenspiel mit anderen Buttons immer nur einen als selected haben.

    - die Buttons sollen nicht in der TabBar sein
    - auch keine SegmentControll Buttons (außer wenn mir jemand sagen kann wie ich in diesen die Schriftgröße ändere)
    - die Buttons liegen auf einem View.


    Besten Dank.


    Gruß
    Chris
  • Du invertierst in der Action-Methode den Selected-State des Buttons:

    Quellcode

    1. button.selected = !button.selected;


    Wenn Du eine Buttongruppe haben möchtest, solltest Du sie in einen gemeinsamen View legen. Den Status kannst Du dann über eine For-Schleife setzen:

    Quellcode

    1. for(id theButton in theButtonView.subviews) {
    2. [theButton setSelected:theButton == selectedButton];
    3. }
    „Meine Komplikation hatte eine Komplikation.“
  • sobald ich aber den Eintrag so vornehme bekomme ich:
    error: request for member 'selected' in something not a structure or union

    Das Umschalten auf einen anderen Text "START" funktioniert.

    Quellcode

    1. -(IBAction)startTimer: (id) sender {
    2. [sender setTitle:@"START" forState: UIControlStateHighlighted];
    3. sender.selected = !sender.selected;
    4. }
  • Danke dir für die schnellen Antworten.

    Ich habe die Bedeutung von "selected" jetzt erst richtig verstanden.

    Ich dachte der Button bleibt dann auch in der Farbe wenn er betätigt wird.

    Ein Trugschluss! ;)

    Er ist zwar selected aber wenn man z.B. kein Image hinterlegt für den Wechsel zwischen normal und selected, sieht der Button bei normal und selected gleich aus.
  • Hattest du es so gemeint ?

    Quellcode

    1. -(IBAction)taste1
    2. {
    3. [self performSelector:@selector(btSet1) withObject:self afterDelay:0.01];
    4. }
    5. -(void)btSet1
    6. {
    7. [self.bt1 setHighlighted:YES];
    8. [self.bt2 setHighlighted:NO];
    9. [self.bt3 setHighlighted:NO];
    10. }
    11. -(IBAction)taste2
    12. {
    13. [self performSelector:@selector(btSet2) withObject:self afterDelay:0.01];
    14. }
    15. -(void)btSet2
    16. {
    17. [self.bt1 setHighlighted:NO];
    18. [self.bt2 setHighlighted:YES];
    19. [self.bt3 setHighlighted:NO];
    20. }
    21. -(IBAction)taste3
    22. {
    23. [self performSelector:@selector(btSet3) withObject:self afterDelay:0.01];
    24. }
    25. -(void)btSet3
    26. {
    27. [self.bt1 setHighlighted:NO];
    28. [self.bt2 setHighlighted:NO];
    29. [self.bt3 setHighlighted:YES];
    30. }
    Alles anzeigen
  • macmoonshine schrieb:

    Was hast Du gegen die Lösung mit der Schleife?


    Hallo @macmoonshine !

    Ich habe nichts gegen die Lösung mit der Schleife, sie ist SUPER ! Ich wollte nur das von @Hustello angesprochene Problem lösen. Mittlerweile habe ich auch die "Schleife" in meine Version eingebaut. Wie gesagt, total super !

    Danke !

    Quellcode

    1. -(IBAction)taste1:(id)sender
    2. {
    3. [self performSelectorOnMainThread:@selector(btSet:) withObject:sender waitUntilDone:NO];
    4. }
    5. -(IBAction)taste2:(id)sender
    6. {
    7. [self performSelectorOnMainThread:@selector(btSet:) withObject:sender waitUntilDone:NO];
    8. }
    9. -(IBAction)taste3:(id)sender
    10. {
    11. [self performSelectorOnMainThread:@selector(btSet:) withObject:sender waitUntilDone:NO];
    12. }
    13. -(void)btSet:(id)sTaste
    14. {
    15. for(id nTaste in self.view.subviews)
    16. {
    17. [nTaste setHighlighted:nTaste == sTaste];
    18. }
    19. }
    Alles anzeigen