Esto podría ser un "truco", pero funciona. Mi caso es ligeramente diferente. Estoy usando un UIPicker
, pero puedo cambiar el objeto de su manipulación.
Mi problema es que puedes seleccionar un objeto, girar el selector, y mientras está terminando su giro, selecciona un objeto diferente. Lo que terminó sucediendo fue que el nuevo objeto obtenía el valor final de ese giro, en lugar de ser ignorado.
Lo que hice al configurar el UIPicker
le daría un tag
único basado en el objeto que se suponía que debía actualizar.
- (void)updatePickerView:(UIPickerView*)pickerView
{
...
pickerView.tag = [self.myObject.position integerValue];
[pickerView selectRow:i inComponent:0 animated:NO];
}
Luego, cuando termina su giro, compruebo que las etiquetas estén alineadas.
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
if (pickerView.tag == [self.myObject.position integerValue]) {
...
}
}
No estoy seguro de cómo funciona en el lado de Apple, pero esto fue suficiente para que funcione para mí.
Como nota al margen, y no estoy seguro de si esto es importante, pero mi UIPicker
está en una UITableViewCell
pero ya que es una célula reutilizable y porque estaba teniendo los problemas que yo era, asumo la UIPicker es la lo mismo cuando se mueve de una posición a otra (ya que solo hay una en pantalla a la vez).
¿Qué quieres decir con spinning? El único elemento giratorio en la interfaz de usuario de iPhone que conozco es UIActivityIndicatorView – Max
No lo he intentado, pero ¿qué pasaría si haces esto mientras giras? '[picker selectRow: [selector seleccionadoRowInComponent: i] enComponent: i animado: YES];' para cada componente 'i' que tiene? – nacho4d
@Max en iPhone, puedes deslizar hacia abajo en el uipickerview para hacer que gire (estilo de tragamonedas) – zsniperx