2010-03-21 12 views
5

używam kod:Jak zakodować zielony przycisk w arkuszu UIActionSheet?

{ 
     randomstatus=0; 
     msg=[[NSString alloc]initWithFormat:@"Good job, do you want to continue?"]; 
     UIActionSheet *actionSheet=[[UIActionSheet alloc]initWithTitle:msg delegate:self cancelButtonTitle:@"No" destructiveButtonTitle:@"Yes" otherButtonTitles:nil]; 
     [actionSheet showInView:self.view]; 
     [actionSheet release]; 
     [msg release]; 
    } 

Nie chcę, aby zmienić kod, ale muszę „destructiveButton” być zielony zamiast czerwonego. Czy to możliwe, czy też muszę użyć innego przycisku?

Odpowiedz

2

Niestety, nie ma oficjalnie dostępnych metod dostosowywania przycisków UIActionSheet.

Można jednak uzyskać dostęp do subskrybentów arkusza UIActionSheet (który może ulec uszkodzeniu w przyszłej aktualizacji systemu iPhone OS) lub dodać nowy widok za pomocą przycisku, który obejmuje oryginalny przycisk niszczącej akcji (po raz kolejny może to spowodować uszkodzenie).

Chociaż nie jest to bezpośrednio związane ze zmianą koloru przycisku w arkuszu UIActionSheet, to poprzednie pytanie: iPhone Disabling UIActionSheet buttons przedstawia kilka sposobów dodawania niestandardowych widoków do arkusza UIActionSheet.

3

Nie ma "standardowego" sposobu zmiany wyglądu przycisków. Wszelkie sposoby użycia będą w zasadzie hackami i mogą przerwać się w przyszłości, jeśli Apple zmieni komponent UIActionSheet. Mogą także odrzucić Twoją aplikację, jeśli zdenerwują bogów App-Store.

Myślę, że najbardziej przyszłościowym sposobem na osiągnięcie tego celu jest stworzenie własnej klasy arkusza akcji od zera, tzn. Nie podklasy UIActionSheet (ponieważ może to pęknąć w przyszłości). Chociaż może to być nieco więcej pracy niż niektóre hack, dodatkowa elastyczność, którą zdobędziesz, będzie przydatna w przyszłości.

To nie powinno być zbyt trudne. Będziesz potrzebował widoku, który jest tłem dla arkusza czynności, który możesz uzyskać, wykonując zrzut ekranu standardowego arkusza UIActionSheet i kilku photoshoppingów. Następnie dodaj własne przyciski jako podprzeglądy. Trochę animacji do wywoływania widoku i gotowe.

Chciałbym, aby Twoja klasa implementowała wszystkie metody, jakie wykonuje UIActionSheet, a także uruchamiać metody, jakich oczekuje UIActionSHeetDelegate. W ten sposób można go zastąpić w dowolnym miejscu, w którym w inny sposób można użyć natywnego arkusza UIActionSheet