Frage

Ich habe einen UIPickerView, in seinen Delegierten Ich versuche, die Ansicht für eine Reihe anpassen. Ich bin mit dem 3.1 SDK.

So in den Delegierten ich habe:

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

Von dem Apfel docs: Wenn die zuvor verwendete Ansicht (Ansicht der Parameter) ausreichend ist, dass das Rück. Wenn Sie eine andere Ansicht zurückkehren, ist die zuvor verwendete Ansicht freigegeben. Der Kommissionierer Ansicht zentriert die zurück Ansicht im Rechteck für die Zeile.

Wenn ich laufen diese, meine UIPickerView Kontrolle hat keine Gegenstände darin und nach kurzer Zeit wieder abstürzt. Wenn ich diese spezielle Methode entfernen (die für die Delegierten optional ist), kann ich die Etiketten sehe ich über die titleForRow Methode festgelegt, und es wird nicht mehr zum Absturz bringen.

Ich bin ziemlich neu in Kakao (und Kakao-Touch), ich bin nicht sicher, ob die view.backgroundColor Sache funktioniert, aber auch bei der Rückkehr des unmodifizierten alte Ansicht (die ich für die meisten Reihen sowieso tun muss) stürzt mein App.

Bin ich etwas falsch zu machen?

War es hilfreich?

Lösung

Ja, implementieren Sie entweder –pickerView:titleForRow:forComponent: oder –pickerView:viewForRow:forComponent:reusingView:, aber nicht beides. Was geschieht, ist, dass es nicht nennen Ihre –pickerView:titleForRow:forComponent:, weil es Ihre –pickerView:viewForRow:forComponent:reusingView: verwendet. Sie sind die reusingView: Parameter zurückkehren, aber das ist nil das erste Mal, denn es gibt keine „bisher verwendete Ansicht“ für diese Reihe war.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top