Mam tablicę ciągów, których chcę użyć dla tytułów przycisków w arkuszu UIActionSheet. Niestety argument otherButtonTitles: w wywołaniu metody przyjmuje listę łańcuchów o zmiennej długości, a nie tablicę.
Jak więc mogę przekazać te tytuły do arkusza UIActionSheet? Obejście, które widziałem, sugerowane, polega na przekazaniu nil do otherButtonTitles:, a następnie określaniu tytułów przycisków indywidualnie za pomocą addButtonWithTitle :. Ale powoduje to problem z przeniesieniem przycisku „Anuluj” na pierwszą pozycję w arkuszu UIActionSheet, a nie na ostatnią; Chcę, żeby był ostatni.
Czy istnieje sposób na 1) przekazanie tablicy zamiast zmiennej listy ciągów lub alternatywnie 2) przeniesienie przycisku anulowania na dół arkusza UIActionSheet?
Dzięki.
źródło
Odpowiedzi:
Mam to do pracy (wystarczy, wystarczy zwykły przycisk i po prostu dodaj go po:
źródło
cancelButton
nie jest czerwony.destructiveButton
Jest czerwony.[UIActionSheet addButtonWithTitle]
który nie wydaje się być poprawnie ustawionyfirstOtherButtonIndex
(co powinno być używane w delegacie,actionSheet:clickedButtonAtIndex:
a nie na twardym kodowaniu 0 lub podobnych rzeczy). Brzydota z konwersją anNSArray
nava_list
również nie brzmi jak świetne rozwiązanie. :-( To API jest tak cholernie brzydkie.Jedna mała uwaga: [actionSheet addButtonWithTitle:] zwraca indeks tego przycisku, więc aby być bezpiecznym i „czystym”, możesz to zrobić:
źródło
destructiveButtonIndex
dla niegoBiorąc odpowiedzi Jaby i Nicka i rozszerzając je trochę dalej. Aby włączyć przycisk zniszczenia do tego rozwiązania:
źródło
Istnieje szybka wersja odpowiedzi:
Aby uzyskać wybraną wartość, dodaj delegata do kontrolera ViewController:
Zaimplementuj metodę „clickedButtonAtIndex”
źródło