2010-03-21 14 views
5

Estoy utilizando el código:¿Cómo codigo un botón verde en 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]; 
    } 

que no quieren cambiar el código, pero necesito el "destructiveButton" ser verde en lugar de rojo. ¿Es esto posible, o necesito usar un botón diferente?

Respuesta

2

Lamentablemente, no existen métodos oficialmente proporcionados para personalizar los botones de UIActionSheet.

Sin embargo, puede acceder a las subvistas de UIActionSheet (que podría romperse en una futura actualización de iPhone OS) o agregar una nueva vista con un botón que cubre el botón de acción destructiva original (una vez más, esto puede romperse).

Aunque no está directamente relacionado con el cambio del color de un botón en una Hoja UIAction, esta pregunta anterior: iPhone Disabling UIActionSheet buttons muestra algunas maneras en que podría agregar vistas personalizadas a una Hoja UIA.

3

No hay una forma "estándar" de cambiar la apariencia de los botones. Cualquier forma que use será esencialmente piratería y puede romperse en el futuro si Apple cambia el componente UIActionSheet. También pueden obtener su aplicación rechazada si molestan a los dioses App-Store.

Creo que la forma más segura de lograr esto es crear su propia clase de hoja de acción desde cero, es decir, no subclasificar UIActionSheet (ya que esto podría romperse en el futuro). Aunque esto puede requerir un poco más de preparación que algún truco, la flexibilidad adicional que obtendrás será útil en el futuro.

Esto no debería ser demasiado difícil. Necesitará una vista que es el fondo de la hoja de acción, que puede obtener tomando una captura de pantalla de una UIActionSheet estándar y algunas fotografías. A continuación, agregue sus botones personalizados como subvistas. Un poco de animación para mostrar la vista y listo.

Mi objetivo es que su clase implemente todos los métodos que utiliza UIActionSheet, así como activar los métodos que UIActionSHeetDelegate espera. De esta forma, podrá sustituirlo en cualquier lugar donde use una UIActionSheet nativa

Cuestiones relacionadas