Ich habe eine benutzerdefinierte UIPickerView, die ich in der ViewDidLoad-Methode des ViewControllers das Modell von festlegen.Warum kann ich das Aussehen eines ausgewählten Elements in UIPickerView nicht einstellen?
Ich bin die Lage, das Aussehen jeder Zeile Element zu setzen, die in einer Überschreibung von GetView() für meinen PickerModel, wie so erscheint:
public override UIView GetView(UIPickerView pickerView, nint row, nint component, UIView view)
{
var selectedItem = pickerView.SelectedRowInComponent(0);
UILabel lbl = new UILabel(new CGRect(0, 0, 130f, 40f));
lbl.TextColor = UIColor.Black;
lbl.Font = UIFont.SystemFontOfSize(12f);
lbl.TextAlignment = UITextAlignment.Center;
lbl.Text = _values[(int)row];
if (row == selectedItem)
{
lbl.BackgroundColor = MyColours.GetBluish;
}
return lbl;
}
Aber die if-Anweisung für die Darstellung der zur Zeit einstellen Der ausgewählte Artikel wird nur für die erste und letzte Position im Picker ausgelöst. Warum ist das?
Ein paar Dinge zu beachten Mein Stellvertreter und meine Datenquelle werden auf mein Modell gesetzt, nachdem ich die Modellvariable in meinem ViewController eingestellt habe. Soll der Delegat und die Datenquelle funktionieren? Andere Anleitungen schlagen vor, ViewForRow (ViewFor in Xamarin) in der UIPickerView-Unterklasse zu überschreiben. Aber diese Überschreibung wird nicht aufgerufen wird, wenn ich mit dem Picker interagieren :(
Das Problem bei diesem Ansatz ist es nicht die UIPickerView aktualisieren, da ich durch sie navigieren sie nur Updates, wenn ich die Picker loslassen – Chucky
auch diese Aufruf zu var view = picker.ViewFor (Zeile, Komponente);. Erträge Null. – Chucky