DateTimePicker в Xamarin.Forms iOS - PullRequest
       30

DateTimePicker в Xamarin.Forms iOS

0 голосов
/ 23 октября 2018

Я создаю приложение с помощью форм Xamarin и хочу реализовать подобный DatePicker в iOS https://developer.apple.com/documentation/uikit/uidatepicker

Я нашел, как реализовать TimePicker или DatePicker, но не все водин.Есть ли способ добавить его в Xamarin Forms?Есть ли способ создать его в формах Xamarin?

 <DatePicker
   x:Name="inicioDatePicker"
   Format="D"
   DateSelected="OnDateSelected"
   Date="{Binding InicioDatePicker}"/>

Спасибо.Привет

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы должны добавить Событие, когда значение Пикера изменилось. Ссылка на следующий код

//...
using ObjCRuntime;
//...
protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
{
    base.OnElementChanged(e);
    if (Control != null)
     {
       UIDatePicker dateTimePicker = (UIDatePicker)Control.InputView;

       dateTimePicker.Mode = UIDatePickerMode.DateAndTime;
       dateTimePicker.AddTarget(this, new Selector("DateChanged:"), UIControlEvent.ValueChanged);
       NSDateFormatter dateFormat = new NSDateFormatter();
       dateFormat.DateFormat = "dd/MM/yyyy HH:mm";
       var text = (UITextField)Control;
       text.Text = dateFormat.ToString(dateTimePicker.Date);            
     }
}

[Export("DateChanged:")]
public void DateChanged(UIDatePicker picker)
{
   NSDateFormatter dateFormat = new NSDateFormatter();
   dateFormat.DateFormat = "dd/MM/yyyy HH:mm";
   var text = (UITextField)Control;
   text.Text = dateFormat.ToString(picker.Date);
}
0 голосов
/ 23 октября 2018

Мне удалось это сделать, но я не могу отформатировать дату и время, когда нажимаю кнопку «Готово». Кто-нибудь знает, как это сделать?

Это мой код:

using System;
using App.iOS;
using CoreGraphics;
using Foundation;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(DatePicker), typeof(CustomDatePickerRender))]

namespace App.iOS
{

public class CustomDatePickerRender : DatePickerRenderer
{

    public CustomDatePickerRender()
    {
    }

    protected override void OnElementChanged(ElementChangedEventArgs<DatePicker> e)
    {
        base.OnElementChanged(e);
        if (Control != null)
        {
            var dateTimePicker = (UIDatePicker)Control.InputView;
            dateTimePicker.Mode = UIDatePickerMode.DateAndTime;
            NSDateFormatter dateFormat = new NSDateFormatter();
            dateFormat.DateFormat = "dd/MM/yyyy HH:mm";


            var text = (UITextField)Control;
            text.Text = dateFormat.ToString(dateTimePicker.Date);
        }
    }



   }
}
...