Я пытаюсь реализовать объект pickview вместо клавиатуры на xamarin. ios, я нашел что-то на net, но они не для меня. Я должен ввести значение числового значения c, необходимое для TextField, которое при нажатии вместо стандартной клавиатуры покажет мое окно выбора. И он вставит его в поле для последующей передачи в сценарий php для вставки в базу данных. Я разработал этот код, но я застрял, я скромно прошу вас о помощи :( Пожалуйста, только код c#, если вы мне поможете.
Я отображаю Пикер со своим списком, но когда мне нужно go, чтобы получить данные и вставить их где-нибудь, например, в текстовое поле или в переменную, чтобы сохранить их и отправить в сценарий PHP. Я не могу получить выбранное значение!
public override void ViewDidLoad()
{
base.ViewDidLoad();
//gesture torna indietro
var BackGesture = new UISwipeGestureRecognizer(swipe);
BackGesture.Direction = UISwipeGestureRecognizerDirection.Right;
BackGesture.NumberOfTouchesRequired = 1;
View.AddGestureRecognizer(BackGesture);
//evento torna indietro
void swipe(UISwipeGestureRecognizer sw1)
{
//torno indietro
apriStoryBoard("Home");
}
var list = new List<string> { "1", "2" };
ConfigurePicker(list);
// picker.Model = colorsViewModel;
}
void ConfigurePicker(List<string> list)
{
var pickerTextField = new UITextField();
var picker = new UIPickerView();
picker.Model = new ColorsViewModel(list);
var screenWidth = UIScreen.MainScreen.Bounds.Width;
var pickerToolBar = new UIToolbar(new RectangleF(0, 0, (float)screenWidth, 44)) { BarStyle = UIBarStyle.Default, Translucent = true };
var flexibleSpaceButton = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
var doneButton = new UIBarButtonItem(UIBarButtonSystemItem.Done, (sender, e) => Rips1.ResignFirstResponder());
pickerToolBar.SetItems(new[] { flexibleSpaceButton, doneButton }, false);
var colorsViewModel = new ColorsViewModel(list);
colorsViewModel.ColorChange += (sender, e) =>
{
Rips1.Text = colorsViewModel.SelectedColor;
};
Rips1.InputView = picker;
Rips1.InputAccessoryView = pickerToolBar;
}
PickviewModel класс:
class ColorsViewModel : UIPickerViewModel
{
List<string> list;
public event EventHandler ColorChange;
public string SelectedColor { get; private set; }
public override System.nint GetRowsInComponent(UIPickerView pickerView, nint component) //non e uguale
{
return list.Count;
}
public ColorsViewModel(List<string> list)
{
this.list = list;
}
public override System.nint GetComponentCount(UIPickerView pickerView)
{
return 1;
}
public override string GetTitle(UIPickerView pickerView, nint row, nint component)
{
return list[(int)row];
}
//controla la selezione attuale
public override void Selected(UIPickerView pickerView, nint row, nint component)
{
var color = list[(int)row];
SelectedColor = color;
ColorChange?.Invoke(null, null);
}
public string getValore(nint row)
{
return list[(int)row];
}
}