2010-03-21 21 views
5

Ben kodu kullanıyorum:UIActionSheet'de yeşil bir düğmeyi nasıl kodlarım?

{ 
     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]; 
    } 

Ben kodunu değiştirmek istemiyorum ama "destructiveButton" ihtiyaç yeşil yerine kırmızı olması. Bu mümkün mü, yoksa farklı bir düğme kullanmam mı gerekiyor?

cevap

2

Maalesef, UIActionSheet düğmelerinin özelleştirilmesi için resmi olarak sağlanan herhangi bir yöntem yoktur. Ancak UIActionSheet'in alt görünümlerine (gelecekteki bir iPhone OS güncellemesinde kırılabilir) erişebilir veya orijinal yıkıcı eylem düğmesini içeren bir düğmeyle yeni bir görünüm ekleyebilirsiniz (bir kez daha kırılabilir). Doğrudan bir UIActionSheet üzerinde bir düğmeye rengini değiştirerek ilgili olmasa da

, bu, daha önceki soru: iPhone Disabling UIActionSheet buttons Bir UIActionSheet için özel görünümler eklemek edebileceği birkaç yol gösterir.

3

Düğmelerin görünürlüğünü değiştirmenin "standart" yolu yoktur. Apple'ın UIActionSheet bileşenini değiştirmesi durumunda, kullandığınız her türlü yöntem hack olacaktır ve gelecekte kırılabilir. App Store Store tanrılarını üzerlerse uygulamanızı reddedebilirler.

Bunu yapmanın en geleceğe hazırlanma şekli, kendi eylem kâğıdı sınıfınızı sıfırdan, yani UIActionSheet alt sınıflarını (ileride kırılabileceği gibi) oluşturmaktır. Bu, bazı kesmek için biraz daha fazla iş olsa da, kazanacağınız ekstra esneklik gelecekte işe yarayacaktır.

Bu çok zor olmamalı. Standart bir UIActionSheet ekran görüntüsünü ve bazı fotoğraf çekimlerini kullanarak elde edebileceğiniz eylem sayfasının arka planı olan bir görünüme ihtiyacınız olacaktır. Ardından özel düğmelerinizi alt görünümler olarak ekleyin. Görünümü getirmek için biraz animasyon ve işiniz bitti.

UIActionSHeetDelegate'in beklediği yöntemlerin yanı sıra sınıfınızın UIActionSheet'in tüm yöntemlerini gerçekleştirmesini hedeflerim. Bu şekilde, aksi takdirde yerel bir UIActionSheet

'u kullandığınız her yerde değiştirebileceksiniz.
İlgili konular