4 Stimmen

Zwei Alert-Ansichten im selben View-Controller

Ich habe zwei UIAlertView s im selben View-Controller und ich möchte die Delegate-Methode verwenden

-(void)alertView:(UIAlertView *alertView clickedButtonAtIndex:(NSInteger) buttonIndex

Diese Methode wird aufgerufen, wenn eine Schaltfläche in einer Alarmansicht gedrückt wird. Beide Alarmansichten rufen jedoch die gleiche Methode auf.

Wie kann ich die beiden Alarmansichten unterscheiden?

8voto

Stephen Darlington Punkte 50435

Setzen Sie die tag Eigenschaft auf verschiedene Werte setzen, wenn Sie die Warnung anzeigen. Es handelt sich nur um eine ganze Zahl, die in der Callback-/Delegate-Methode abgefragt werden kann.

Hier ein Beispiel (unter Verwendung eines ActionSheet und nicht eines AlertView, aber das Prinzip ist genau dasselbe):

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Title"
                                                         delegate:self
                                                cancelButtonTitle:@"Cancel"
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:@"Some option", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
actionSheet.tag = 10;
[actionSheet showInView:self.view];
[actionSheet release];

Dann in Ihrem Selektor:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
  switch (actionSheet.tag) {
    case 10:
      // do stuff
      break;
    case 20:
      // do other stuff
      break;
  }
}

Natürlich würden Sie Konstanten anstelle von literalen Werten, lokalisierten Strings usw. verwenden, aber das ist die Grundidee.

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