with sclalertview font custom change uitableview ios5 uialertview storyboard

uitableview - sclalertview - swift custom alert controller



NavegaciĆ³n secuencial condicional de UITableViewCell basada en la respuesta a UIAlertView (3)

@user, solo crea la alerta. Mira la antigua moda; Sé de cualquier característica del guión gráfico para hacer esto de manera diferente. Donde el guión gráfico puede ayudar es con los segues. Puede llamar a los segues programáticamente. Con su botón de cancelación de vista de alerta, puede simplemente regresar (es decir, no hacer nada). Para la otra opción, para mostrar otra vista, puede llamar mediante programación a un cambio para pasar a la vista deseada. Si no tiene la transición adecuada ya definida por algún otro motivo en su guión gráfico, simplemente cree un botón y utilícelo para crear el intervalo y asígnele un nombre. Nombra el segue haciendo clic en él en el guión gráfico y usa el inspector de atributos para darle su nombre (identificador). Luego, oculta el botón o colócalo fuera de la vista. Normalmente coloco este tipo de botón en la barra de herramientas y uso espaciadores para mantenerlos fuera de la vista. Aquí hay un código de muestra:

Llame a la transición del delegado de vista de alerta de esta manera:

[self performSegueWithIdentifier: @"done" sender: self];

También implemente este método para realizar cualquier tarea necesaria para prepararse para el cambio:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([[segue identifier] isEqualToString:@"done"]) { // [[segue destinationViewController] setManagedObjectContext:self.managedObjectContext]; // [[segue destinationViewController] setSelectedClient:selectedClient]; } }

Mi problema parece ser un problema genérico, pero parece que no puede encontrar una respuesta.

Tengo una situación en la que cuando el usuario toca una UITableViewCell personalizada, me gustaría mostrar una alerta y luego basándome en la respuesta a la alerta, permanezco en la misma vista (el usuario selecciona cancelar) o visualizo otra vista (si el usuario selecciona proceder). Y me gustaría hacer esto usando la función del guión gráfico y los cambios.

¿Cómo podría uno hacer esto? ¿Tienes que hacer esto a la vieja usanza?


Puede crear segmentos directamente desde el StartingViewController a múltiples destinationViewControllers que luego se pueden "ejecutar" mediante programación. No es necesario crear botones ocultos para ellos, lo que parece un truco.


OK, se me ocurrió una solución acorde con el guión gráfico que me gusta.

Ejemplo:

Mi tabla vista tiene 2 secciones, agrupadas y las celdas son prototipos dinámicos. La sección 0 contiene una fila / UITableViewCell y no quiero que se segue. La Sección 1 contiene varias celdas que quiero activar el segue y profundizar en los detalles.

En Storyboard:

  • Eliminé la segue que vincula la tableviewcell al controlador de vista de destino.
  • Hice un segue ''genérico'' que vincula el controlador de vista de fuente directamente al controlador de vista de destino.
  • En los atributos en el segue, configuré el identificador (''EditTimePeriod'') y establecí el tipo en Push (supongo que Modal funcionaría de la misma manera).

En el controlador de vista de fuente:

  • En el método prepareForSegue manejé tanto el segue ''AddTimePeriod'' común que controlé-arrastré desde mi UIBarButtonItem (Add), junto con el segue ''generic'' (vc -> vc) ''EditTimePeriod''.

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // handle the click of the ''Add'' bar button item if([segue.identifier isEqualToString:@"AddTimePeriod"]) { TimePeriodViewController* tpvc = (TimePeriodViewController*)segue.destinationViewController; tpvc.delegate = self; // database & entity stuff for adding the new one to the mOC, etc } // handle the click of one of the ''editable'' cells - if([segue.identifier isEqualToString:@"EditTimePeriod"]) { TimePeriodViewController* tpvc = (TimePeriodViewController*)segue.destinationViewController; tpvc.delegate = self; TimePeriod * newTP = [self.timePeriodArray objectAtIndex:self.tableView.indexPathForSelectedRow.row]; tpvc.timePeriod = newTP; } }

  • Luego implementé el método tableView: didSelectRowAtIndexPath y puse mi condición aquí. Si la fila seleccionada estaba fuera de la sección cero, llamé a EditTimePeriod segue manualmente, definiendo al remitente como la tablavista seleccionada:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { if(self.tableView.indexPathForSelectedRow.section!=0){ [self performSegueWithIdentifier:@"EditTimePeriod" sender:[tableView cellForRowAtIndexPath:indexPath]]; } [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; return; }

sería bueno codificar la celda en la sección 0 para que no sea seleccionable en primer lugar! Espero que esto ayude sin embargo.

** y luego, 5 minutos después, volví a mirar y me di cuenta de que podía mover los datos de la sección 0 al encabezado de la sección, que es más intuitivo y no se usaba de todos modos. dejando el diseño abierto para una transición estándar desde cada mesa de visión sin necesidad de ninguna condición / verificación. Fue un buen ejercicio de todos modos :)