Pickview объект вместо клавиатуры по умолчанию Xamarin. ios - PullRequest
1 голос
/ 02 апреля 2020

Я пытаюсь реализовать объект 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];
    }

}
...