Pregunta

Tengo un UIPickerView, en ella es delegado estoy tratando de personalizar la vista de una fila. Estoy usando el SDK 3.1.

Así que en el delegado que tengo:

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
//    view.backgroundColor = [UIColor redColor];
    return view;
}

A partir de los documentos de manzana: Si la vista utilizado anteriormente (el parámetro vista) es adecuado, volver que. Si devuelve un punto de vista diferente, la vista utilizada previamente se libera. La vista selector centra la vista devuelta en el rectángulo para la fila.

Cuando ejecuto esto, mi control UIPickerView no tiene ningún artículo en ella, y después de un corto periodo de tiempo se bloquea. Cuando quito este método particular (que es opcional para el delegado), puedo ver las etiquetas que ajustar a través del método titleForRow, y que se colgará ya no.

Soy bastante nuevo en el cacao (cacao y toque), no estoy seguro de lo view.backgroundColor va a funcionar, pero incluso al volver la vista edad no modificada (que tengo que hacer de todos modos para la mayoría de las filas) se bloquea mi aplicación.

¿Estoy haciendo algo mal?

¿Fue útil?

Solución

Sí, se implementa o bien –pickerView:titleForRow:forComponent: o –pickerView:viewForRow:forComponent:reusingView:, pero no ambos. Lo que ocurre es que no está llamando a su –pickerView:titleForRow:forComponent: porque está utilizando su –pickerView:viewForRow:forComponent:reusingView:. Va a devolver el parámetro reusingView:, pero que es nil la primera vez, porque no había "vista anteriormente utilizado" para esa fila.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top