i have custom uipickerview set model of in viewcontroller's viewdidload method.
i'm able set appearance of each row item appears in override of getview() pickermodel, so:
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; }
but if statement setting appearance of selected item fires first , last items in picker. why this?
a couple things note delegate , datasource set model after setting model variable in viewcontroller. how delegate , datasource supposed work? other guides suggest overriding viewforrow (viewfor in xamarin) in uipickerview subclass. override isn't getting called when interact picker :(.
it's not working because uipickerview calls getview
before row selected.
override selected
instead, , update current view:
public override void selected(uipickerview pickerview, nint row, nint component) { var view = pickerview.viewfor(row, component); view.backgroundcolor = drive1colours.getbluish; }
Comments
Post a Comment