2009-03-11 12 views
1

Ich habe ein UIActionSheet mit einer unbestimmten Anzahl von Schaltflächen. Ich muss die Delegate-Methode buttonClickedAtIndex: (oder etwas Ähnliches) verwenden, um zu entscheiden, welche Methode aufgerufen werden soll, wenn der Benutzer auf eine Schaltfläche klickt.UIActionSheet - Unbekannte Anzahl von Tasten, Wie kann man anrufen?

Das Problem ist: Wie entscheide ich, auf welche Schaltfläche geklickt wird, wenn unterschiedliche Schaltflächen in verschiedenen Situationen in verschiedenen Indizes angezeigt werden?

Eine Lösung ist es, auf den Titel des Buttons zu schauen und darauf zu reagieren - aber das ist hässlich, nicht lokalisierbar und einfach schlecht.

Irgendwelche Ideen?

Antwort

5

Ist dies ein Fall, in dem ein einzelner Controller mehrere Blätter anzeigen kann, aber Sie wissen, welche Schaltflächen auf jedem Blatt angezeigt werden? Wenn dies der Fall ist, können Sie die Tag-Eigenschaft des Arbeitsblatts verwenden, um zwischen ihnen zu unterscheiden.

- (IBAction)showEditSheet:(id)sender { 
    UIActionSheet * sheet = [[UIActionSheet alloc] initWith...]; 
    sheet.tag = 1; 
    [sheet showInView:self.view]; 
} 
- (IBAction)showDeleteSheet:(id)sender { 
    UIActionSheet * sheet = [[UIActionSheet alloc] initWith...]; 
    sheet.tag = 2; 
    [sheet showInView:self.view]; 
} 
- (void)actionSheet:(UIActionSheet *)actionSheet 
    clickedButtonAtIndex:(NSInteger)buttonIndex { 
    switch(actionSheet.tag) { 
     case 1: 
      // This is the edit sheet 
      switch(buttonIndex) { ... } 
      break; 

     case 2: 
      // This is the delete sheet 
      switch(buttonIndex) { ... } 
      break; 

     default: 
      NSAssert(NO, @"Unknown action sheet"); 
    } 
} 
+0

iPhone-Benutzern wurde die Wahl gegeben, die Kamera oder die Bibliothek zu verwenden. iPod Touch hat keine Kamera. Anstatt die Schaltflächen auf dem Blatt zu ändern, haben wir uns entschieden, den iPod-Benutzer ohne weitere Auswahl direkt in die Bibliothek zu schicken. Es wird also nur ein Blatt mit statischen Schaltflächen verwendet. Problem gelöst. – Jasarien

Verwandte Themen