Question

J'ai un UIPickerView, dans elle est déléguée j'essaie de personnaliser l'affichage d'une ligne. J'utilise le SDK 3.1.

Ainsi, dans le délégué je:

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

A partir de la documentation de la pomme: Si la vue utilisée précédemment (le paramètre de vue) est adéquate, le retourner. Si vous retournez un point de vue différent, la vue utilisée précédemment est libéré. La vue Préparateur centre la vue retournée dans le rectangle pour la ligne.

Quand je lance, mon contrôle UIPickerView n'a pas tous les éléments en elle, et après un court moment des accidents. Lorsque je supprime cette méthode particulière (qui est facultative pour le délégué), je peux voir les étiquettes I définies via la méthode titleForRow, et il ne sera plus tomber en panne.

Je suis assez nouveau pour le cacao (et touche de cacao), je ne suis pas sûr la chose view.backgroundColor fonctionnera, mais même lors du retour de la vue ancienne non modifiée (que je dois faire de toute façon pour la plupart des lignes) se bloque ma app.

Est-ce que je fais quelque chose de mal?

Était-ce utile?

La solution

Oui, vous implémentez soit –pickerView:titleForRow:forComponent: ou –pickerView:viewForRow:forComponent:reusingView:, mais pas les deux. Ce qui se passe est qu'il ne demande pas votre –pickerView:titleForRow:forComponent: parce qu'il utilise votre –pickerView:viewForRow:forComponent:reusingView:. Vous retournez le paramètre reusingView:, mais qui est nil la première fois, parce qu'il n'y avait pas de « vue précédemment utilisé » pour cette ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top