2016-07-31 6 views
-1

Ich habe mehrere Schaltflächen in einer Ansicht, jedes habe ich Tag-Wert und Aufruf einer gleichen Funktion, mein Problem ist, dass, wenn ich eine Schaltfläche auswähle, muss ich anderen Button-Status deaktivieren oder Sie können Ich sage, dass ich nur eine Taste gleichzeitig anzeigen muss. Wählen Sie den Status eines UIButton

My-Code

-(IBAction)checkOption:(id)sender 
{ 
    if([sender tag]==100) 
    { 
     //do stuff 
    } 
    if([sender tag]==101) 
    { 
     //do stuff 
    } 
    [self performSelector:@selector(doHighlight:) withObject:sender afterDelay:0]; 
} 

- (void)doHighlight:(UIButton*)b { 
    if ([b isSelected]) 
    { 
     b.selected = NO; 
     b.alpha = 0.5; 
    } else { 
     b.selected = YES; 
     b.alpha = 1; 
    } 
} 
+0

sind die Schaltfläche 'IBOutlets'? – Shubhank

+0

ja Tasten sind IBOutlets – iphonemaclover

+0

down Wähler bitte entweder beantworten oder nicht stimmen ohne Grund, wenn Sie nicht wissen objective-c – iphonemaclover

Antwort

1
-(void)buttonSelectDeslect:(UIButton*)sender superView:(UIView*)superView 
{ 
    for (UIButton *button in [superView subviews]) { 
    if ([button isKindOfClass:[UIButton class]]) { 
     if (sender == button) { 
      button.selected = YES; 
     }else{ 
      button.selected = NO; 
     } 
    } 
    } 
} 
+0

versuchte es funktioniert – iphonemaclover

0

eine Instanz UIButton erstellen vorherige ausgewählte Taste zu speichern. Wenn Sie eine aktuelle Schaltfläche auswählen, überprüfen Sie diese Instanz, wenn nicht NULL, dann legen Sie die ausgewählte Eigenschaft auf NEIN fest und aktivieren Sie dann die aktuelle Schaltfläche als vorherige Schaltfläche. Hoffe, ich habe deine Frage beantwortet.

+0

Code zu erklären, bitte? – iphonemaclover

+0

- (void) doHighlight: (UIButton *) b { if (prevButton) { prevButton.selected = NO; } b.selected = yes; prevButton = b; } deklarieren Sie prevButton als UIbutton in Ihrem Viewcontroller –

0

Ähnlich wie Amits Antwort, aber Alpha-Änderung hinzufügen, wenn der Status der Schaltfläche ausgewählt wurde.

- (void)doHighlight:(UIButton*)clickBtn 
     { 
      NSArray *subviews = [clickBtn.superView subviews]; 
      for (UIButton *subBtn in subviews){ 
       if ([subBtn isKindOfClass:[UIButton class]]){ 
         if (clickBtn == subBtn){ 
          subBtn.selected = NO; 
          subBtn.alpha = 0.5; 
         } else { 
          subBtn.selected = YES; 
          subBtn.alpha = 1; 
         } 
       } 
      } 
     }