Me gustaría mostrar un conjunto de números consecutivos en un componente UIPickerView pero tenerlo envuelto como el componente de segundos de la aplicación Reloj-> Temporizador. El único comportamiento que puedo habilitar se parece al componente horas de la aplicación Timer, donde puede desplazarse solo en una dirección.¿Cómo se hace que un componente UIPickerView se ajuste?
Respuesta
Es tan fácil establecer el número de filas en un número grande, y hacer que comience con un valor alto, hay pocas posibilidades de que el usuario pueda desplazar la rueda por un tiempo muy largo - Y aun así, lo peor que sucederá es que van a tocar fondo.
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
// Near-infinite number of rows.
return NSIntegerMax;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
// Row n is same as row (n modulo numberItems).
return [NSString stringWithFormat:@"%d", row % numberItems];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.pickerView = [[[UIPickerView alloc] initWithFrame:CGRectZero] autorelease];
// ...set pickerView properties... Look at Apple's UICatalog sample code for a good example.
// Set current row to a large value (adjusted to current value if needed).
[pickerView selectRow:currentValue+100000 inComponent:0 animated:NO];
[self.view addSubview:pickerView];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSInteger actualRow = row % numberItems;
// ...
}
encontré mi respuesta aquí:
http://forums.macrumors.com/showthread.php?p=6120638&highlight=UIPickerView#post6120638
Cuando se le pregunta por el título de una fila, darle: Código:
return [rows objectAtIndex:(row % [rows count])];
Cuando se dice que el didSelectRow usuario: inComponent :, usar algo como esto:
Código:
//we want the selection to always be in the SECOND set (so that it looks like it has stuff before and after)
if (row < [rows count] || row >= (2 * [rows count])) {
row = row % [rows count];
row += [rows count];
[pickerView selectRow:row inComponent:component animated:NO];
}
Parece que UIPickerView no admite envolverse de forma nativa, pero puede engañar insertando más conjuntos de datos para mostrar y cuando el selector se detiene, centrando el componente en el medio del conjunto de datos.
awesome !! gracias una tonelada !! La buena solución fue realmente útil – user1046037
Simplemente cree una matriz varias veces, para que tenga sus números varias veces. Digamos cuando queremos tener los números del 0 al 23 y ponerlos en una matriz. que vamos a hacer 10 momentos como este ...
NSString *stdStepper;
for (int j = 0; j<10; j++) {
for(int i=0; i<24; i++)
{
stdStepper = [NSString stringWithFormat:@"%d", i];
[_hoursArray addObject:stdStepper];
}
}
más adelante nos propusimos la fila 0 seleccionadas como esto
[_hoursPickerView selectRow:120 inComponent:0 animated:NO];
Todas las respuestas no están realmente haciendo la vista selector de desplazamiento de forma cíclica.
He hecho un tableView cíclico basado en UIScrollView
. Y basado en este tableView, reimpleto UIPickerView
. Usted podría estar interesado en este DLPickerView
. Y esta vista de selector tiene todas las características que tiene UIPickerView
, pero también ofrece muchas características nuevas, y esta vista personalizada es mucho más fácil.
https://github.com/danleechina/DLPickerView
Y ser conscientes de que este desplazamiento DLPickerView
cíclicamente es realmente desplaza cíclicamente. Toda la magia sucedió debido a otra clase DLTableView
.
- 1. ¿Cómo se hace un componente reutilizable con Flask-SQLAlchemy?
- 2. El componente al que se hace referencia 'EntityFramework' no se pudo encontrar.
- 3. Imagen UIPickerview con etiqueta en el componente
- 4. ¿Cómo hacer que FigureCanvas se ajuste a un panel?
- 5. ¿Cómo se encoge un UIPickerView en el iPhone?
- 6. UIPickerView Altura no se puede cambiar
- 7. ¿Cómo se hace un etag que coincida con Apache?
- 8. ¿Cómo se reduce el contenido para que se ajuste a un div?
- 9. ¿Cómo hacer que la sugerencia de EditText no se ajuste?
- 10. ¿Cómo se hace un impulso heterogéneo :: mapa?
- 11. ¿Cómo se especifica un validador para un componente de entrada dentro de un componente compuesto?
- 12. ¿Cómo se hace un lenguaje vinculante?
- 13. ¿Cómo se hace un rango en Rust?
- 14. Obtener la fila seleccionada en UIPickerView para cada componente
- 15. ¿La publicación de un pdf que se utiliza en un componente de la página hace que la página no se publique?
- 16. Interop hace que Unity se cuelgue
- 17. removeFromSuperview hace que mi aplicación se bloquee
- 18. C# - Cómo extender un cuadro de texto para que se ajuste a la ventana contenedora
- 19. Detener un WebBrowser hace que se abra Internet Explorer
- 20. ¿Cómo establecer un tamaño de JFrame para que se ajuste al CardLayout que se muestra en JPanel?
- 21. ¿Cómo se hace para que Inno Setup no parezca congelado mientras se realiza un Exec largo?
- 22. ¿Cómo encontrar si un objeto al que se hace referencia se puede eliminar?
- 23. IKImageView hace que la aplicación se cuelgue
- 24. ¿Cómo se hace que una página html se desvanezca mientras otra se desvanece?
- 25. ¿Cómo se script un componente OLE utilizando Python?
- 26. C# - ¿Qué es un componente y cómo se usa normalmente?
- 27. ¿Cómo cambio el tamaño del texto y el ancho del componente de un UIPickerView?
- 28. ¿Cómo puedo cambiar el ancho de cada componente en un UIPickerView?
- 29. ¿hay un método delegado uipickerview como scrollviewDidScroll?
- 30. Evitar que TextView se ajuste en el elemento primario
¡Esto funcionó bien para mí! Gracias. ¿Existe algún problema de rendimiento/memoria? – Dimitris
No debería haber problemas de rendimiento/memoria en comparación con una lista que no se ajusta, ya que el marco no mantiene los elementos desplazados en la memoria. Si no está seguro, ¡use el generador de perfiles! – squelart
Así es como la aplicación Clock implementa 'looping'.NSIntegerMax –