2010-03-21 11 views
5

Sto usando il codice:Come si codifica un pulsante verde in 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]; 
    } 

Non voglio cambiare il codice, ma ho bisogno del "destructiveButton" essere verde al posto del rosso. È possibile o devo usare un pulsante diverso?

risposta

2

Sfortunatamente non esistono metodi forniti ufficialmente per la personalizzazione dei pulsanti UIActionSheet.

Tuttavia è possibile accedere alle sottoview del UIActionSheet (che potrebbe interrompere un futuro aggiornamento del sistema operativo dell'iPhone) o aggiungere una nuova vista con un pulsante che copra il pulsante di azione distruttivo originale (ancora una volta potrebbe interrompersi).

Anche se non è direttamente correlato alla modifica del colore di un pulsante su un UIActionSheet, questa domanda precedente: iPhone Disabling UIActionSheet buttons mostra alcuni modi in cui è possibile aggiungere viste personalizzate a un UIActionSheet.

3

Non esiste un modo "standard" per modificare l'aspetto dei pulsanti. Tutti i modi in cui utilizzi saranno essenzialmente degli hack e potrebbero rompersi in futuro se Apple modificasse il componente UIActionSheet. Potrebbero anche rifiutare la tua app se sconvolgono gli dei App-Store.

Penso che il modo più a prova di futuro per questo è creare la propria classe di fogli d'azione da zero, cioè non sottoclasse UIActionSheet (in quanto ciò potrebbe rompersi in futuro). Anche se questo potrebbe essere un po 'più di lavoro in anticipo rispetto ad alcuni hack, la maggiore flessibilità che otterrai sarà utile in futuro.

Questo non dovrebbe essere troppo difficile. Avrai bisogno di una vista che sia lo sfondo per il foglio d'azione, che puoi ottenere facendo uno screenshot di un UIActionSheet standard e alcuni photoshop. Quindi aggiungi i pulsanti personalizzati come sottoview. Un po 'di animazione per far apparire la vista e il gioco è fatto.

Vorrei puntare a far sì che la classe implementasse tutti i metodi che UIActionSheet fa, oltre che a sparare sui metodi che UIActionSHeetDelegate si aspetta. In questo modo sarai in grado di sostituirlo ovunque altrimenti utilizzeresti un UIActionSheet nativo

Problemi correlati