¿Cómo hago esta tarea? Básicamente, tendré una matriz de "segundos int" enumerada dentro de UITableView. Entonces, ¿cómo puedo asignar cada "segundos int" a la cuenta regresiva a cero? Los posibles problemas que estoy viendo son los temporizadores que no se actualizan cuando la célula aún no se ha creado. ¿Y cómo instanciar varios NSTimers independientes actualizando diferentes elementos de la interfaz de usuario? Estoy perdido aquí, por lo que cualquier sugerencia es muy apreciada. a efectos visuales, quiero tener algo como esto:temporizadores de cuenta atrás múltiples dentro de uitableview
Respuesta
De la imagen, parece que su modelo es un conjunto de acciones que el usuario planea tomar. Me gustaría organizar las cosas de esta manera:
1) MyAction es un NSObject con un nombre y una fecha de vencimiento. MyAction implementa algo como esto:
- (NSString *)timeRemainingString {
NSDate *now = [NSDate date];
NSTimeInterval secondsLeft = [self.dueDate timeIntervalSinceDate:now];
// divide by 60, 3600, etc to make a pretty string with colons
// just to get things going, for now, do something simple
NSString *answer = [NSString stringWithFormat:@"seconds left = %f", secondsLeft];
return answer;
}
2) StatusViewController mantiene un identificador para el modelo que es un NSArray de MyActions, sino que también tiene un NSTimer (sólo uno) que dice que el tiempo pasa.
// schedule timer on viewDidAppear
// invalidate on viewWillDisappear
- (void)timerFired:(NSTimer *)timer {
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.model.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyAction *myAction = [self.model objectAtIndex:indexPath.row];
// this can be a custom cell. to get it working at first,
// maybe start with the default properties of a UITableViewCell
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [myAction timeRemainingString];
cell.detailTextLabel.text = [myAction name];
}
Tener cosas interfaz de usuario de fantasía en la mesa de esa manera, es posible que desee subclase UITableViewCell y crear un temporizador como una propiedad de cada uno. La célula puede tener un delegado que responda a TimerWentOff y maneje el timbre de una alarma o notificación o cualquier otra cosa. Cada temporizador actualizaría la etiqueta en su celda.
Espero que ayude un poco. Si tiene preguntas más específicas, hágamelo saber.
Gracias! Crear la celda personalizada no es un problema, ya lo tengo. Entonces, esta parte "¿La célula puede tener un delegado?" ¿Esta es la parte que crea el temporizador de cuenta regresiva? ¿Debería poner los nstimers en una matriz y acceder a un método para actualizar las etiquetas en mi celda? – Diffy
- 1. Temporizadores de cuenta atrás en jQuery
- 2. segundos temporizador de cuenta atrás
- 3. Redirigir 10 segundos Cuenta atrás
- 4. javascript/hora jQuery cuenta atrás
- 5. Cuenta atrás con la vista de texto
- 6. UITableView dentro de un UIViewController
- 7. ¿Cómo puedo hacer una cuenta atrás jQuery
- 8. PHP Cuenta atrás para la fecha
- 9. Cuenta atrás para Navidad con Joda-Time
- 10. Javascript, temporizador de cuenta atrás y texto de pantalla
- 11. Restablecer la cuenta atrás en la tarea de apio
- 12. Desplazamiento de una UITableView dentro de UIScrollView
- 13. iPhone Columnas múltiples en UITableView
- 14. Temporizadores no reentrantes
- 15. Árbol de múltiples niveles UITableView en iOS
- 16. Sección dentro de una sección - UITableView -
- 17. Datos principales: UITableView con múltiples NSFetchedResultControllers
- 18. ¿Volver a cargar UITableView cuando navegas hacia atrás?
- 19. Java concurrencia: Cuenta atrás pestillo vs barrera cíclica
- 20. cómo mostrar la cuenta atrás en uilabel en iphone?
- 21. C# Cuenta atrás simple: ¿Qué estoy haciendo mal?
- 22. temporizador de cuenta regresiva
- 23. Android NDK temporizadores
- 24. ¿Cómo mostrar múltiples columnas en una UITableView?
- 25. Cuenta el número de puntos dentro de un círculo rápido
- 26. Obtener cuenta de bucles dentro de un bucle FOR Python
- 27. Encuentra una cadena dentro de otra cadena, buscar hacia atrás
- 28. selector de hora/minuto para el temporizador de cuenta atrás de Android
- 29. secuencia de comandos de cuenta atrás de javascript desde milisegundos en horas-minutos-segundos
- 30. Xcode 4.2 iOS 5: Múltiples segues de un UITableView
gracias amigo! ¿Cómo se actualizará esta etiqueta (cell.textLabel.text = [myAction timeRemainingString];) cada tic? ¿Cómo lo llamas cada segundo? – Diffy
np. configurará su controlador de vista para que sea el "delegado" y el "origen de datos" de la tabla (debería haberlo mencionado). cuando se producen los tics, pides a tu mesa que vuelva a cargar sus datos. la mesa se ocupa del resto. lo llama para preguntar cuántas celdas debe cargar y para configurar cada celda, ambos métodos descritos en el código que proporcioné. – danh
bien, lo conseguí trabajando ... ahora estoy tratando de cambiar su - (NSString *) método timeRemainingString a - (NSString *) timeRemainingString: (NSTimeInterval) secondsRemaining para poder pasar mi matriz de segundos en lugar de un valor fijo. ¿Cómo guardo una referencia de ese valor por lo que deducirá 1 segundo cada vez que se vuelva a cargar la tabla? – Diffy