Verwenden Sie NSArray, um otherButtonTitles anzugeben?

Der Konstruktor von UIAlertSheet verwendet einen otherButtonTitles-Parameter als Varg-Liste. Ich möchte stattdessen die anderen Schaltflächentitel von einem NSArray angeben. Ist das möglich?

ich muss dies tun:

id alert = [[UIActionSheet alloc] initWithTitle: titleString
                                  delegate: self
                                  cancelButtonTitle: cancelString
                                  destructiveButtonTitle: nil
                                  otherButtonTitles: button1Title, button2Title, nil];

Da ich aber zur Laufzeit die Liste der verfügbaren Schaltflächen erstelle, möchte ich unbedingt Folgendes:

id alert = [[UIActionSheet alloc] initWithTitle: titleString
                                       delegate: self
                              cancelButtonTitle: cancelString
                         destructiveButtonTitle: nil
                              otherButtonTitles: otherButtonTitles];

Im Moment denke ich, dass ich einen separaten Anruf haben mussinitWithTitle: für 1 Artikel, 2 Artikel und 3 Artikel. So was:

if ( [titles count] == 1 ) {
     alert = [[UIActionSheet alloc] initWithTitle: titleString
                                         delegate: self
                                cancelButtonTitle: cancelString
                           destructiveButtonTitle: nil
                                otherButtonTitles: [titles objectAtIndex: 0], nil];
} else if ( [titles count] == 2) {
     alert = [[UIActionSheet alloc] initWithTitle: titleString
                                         delegate: self
                                cancelButtonTitle: cancelString
                           destructiveButtonTitle: nil
                                otherButtonTitles: [titles objectAtIndex: 0], [titles objectAtIndex: 1],  nil];
} else {
    // and so on
}

Das ist viel doppelter Code, aber es könnte tatsächlich sinnvoll sein, da ich höchstens drei Schaltflächen habe. Wie kann ich das vermeiden?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage