Aracılığıyla paylaş


Xamarin.iOS'ta seçici denetimi

, UIPickerView tekerlek benzeri bir arabirimin bileşenlerini tek tek kaydırarak listeden değer seçmeyi mümkün kılar.

Seçiciler sık sık bir tarih ve saat seçmek için kullanılır; Apple, UIDatePicker sınıfını seçin.

Makalede ve denetimlerinin nasıl uygulanıp kullanılacağı UIPickerView UIDatePicker açıklanmaktadır.

UIPickerView

Seçici uygulama

Yeni UIPickerViewbir örneği oluşturarak seçici uygulama:

UIPickerView pickerView = new UIPickerView(
    new CGRect(
        UIScreen.MainScreen.Bounds.X - UIScreen.MainScreen.Bounds.Width,
        UIScreen.MainScreen.Bounds.Height - 230,
        UIScreen.MainScreen.Bounds.Width,
        180
    )
);

Seçiciler ve görsel taslaklar

iOS Tasarım Aracı seçici oluşturmak için Araç Kutusu'ndan bir Seçici Görünümü'nü tasarım yüzeyine sürükleyin.

Seçici Görünümünü tasarım yüzeyine sürükleyin

Seçici denetimiyle çalışma

Seçici, verilerle etkileşime geçmek için bir model kullanır:

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    var pickerModel = new PeopleModel(personLabel);
    personPicker.Model = pickerModel;
}

UIPickerViewModel Temel sınıf iki arabirim uygular:IUIPickerDataSource ve IUIPickerViewDelegate, bir seçicinin verilerini ve etkileşimi nasıl işlediğini belirten çeşitli yöntemler bildirir:

public class PeopleModel : UIPickerViewModel
{
    public string[] names = new string[] {
            "Amy Burns",
            "Kevin Mullins",
            "Craig Dunn",
            "Joel Martinez",
            "Charles Petzold",
            "David Britch",
            "Mark McLemore",
            "Tom Opegenorth",
            "Joseph Hill",
            "Miguel De Icaza"
        };

    private UILabel personLabel;

    public PeopleModel(UILabel personLabel)
    {
        this.personLabel = personLabel;
    }

    public override nint GetComponentCount(UIPickerView pickerView)
    {
        return 2;
    }

    public override nint GetRowsInComponent(UIPickerView pickerView, nint component)
    {
        return names.Length;
    }

    public override string GetTitle(UIPickerView pickerView, nint row, nint component)
    {
        if (component == 0)
            return names[row];
        else
            return row.ToString();
    }

    public override void Selected(UIPickerView pickerView, nint row, nint component)
    {
        personLabel.Text = $"This person is: {names[pickerView.SelectedRowInComponent(0)]},\n they are number {pickerView.SelectedRowInComponent(1)}";
    }

    public override nfloat GetComponentWidth(UIPickerView picker, nint component)
    {
        if (component == 0)
            return 240f;
        else
            return 40f;
    }

    public override nfloat GetRowHeight(UIPickerView picker, nint component)
    {
        return 40f;
    }

Seçicinin birden çok sütunu veya bileşeni olabilir. Bileşenler bir seçiciyi birden çok bölüme bölerek daha kolay ve daha belirli veri seçimine olanak sağlar:

İki bileşenli seçici

Seçicideki bileşen sayısını belirtmek için GetComponentCount Yöntem.

Seçicinin görünümünü özelleştirme

Seçicinin görünümünü özelleştirmek için UIPickerView.UIPickerViewAppearancesınıfını GetView seçin veya içindeki UIPickerViewModelve GetRowHeight yöntemlerini geçersiz kılın.

UIDatePicker

Tarih seçici uygulama

Örneği oluşturarak UIDatePickerbir tarih seçici uygulama:

UIPickerView pickerView = new UIPickerView(
    new CGRect(
        UIScreen.MainScreen.Bounds.X - UIScreen.MainScreen.Bounds.Width,
        UIScreen.MainScreen.Bounds.Height - 230,
        UIScreen.MainScreen.Bounds.Width,
        180
     )
);

Tarih seçiciler ve görsel taslaklar

iOS Tasarım Aracı tarih seçici oluşturmak için Araç Kutusu'ndan bir Tarih Seçici'yi tasarım yüzeyine sürükleyin.

Tarih Seçiciyi tasarım yüzeyine sürükleyin

Tarih seçici özellikleri

En düşük ve en yüksek tarih

MinimumDate ve MaximumDate tarih seçicide kullanılabilir tarih aralığını sınırlayın. Örneğin, aşağıdaki kod bir tarih seçiciyi o ana kadar uzanan altmış yılla kısıtlar:

var calendar = new NSCalendar(NSCalendarType.Gregorian);
var currentDate = NSDate.Now;
var components = new NSDateComponents();
components.Year = -60;
NSDate minDate = calendar.DateByAddingComponents(components, currentDate, NSCalendarOptions.None);
datePickerView.MinimumDate = minDate;
datePickerView.MaximumDate = currentDate;

İpucu

açıkça bir DateTime 'a atanabilir NSDate:

DatePicker.MinimumDate = (NSDate)DateTime.Today.AddDays (-7);
DatePicker.MaximumDate = (NSDate)DateTime.Today.AddDays (7);

Dakika aralığı

özelliği, MinuteInterval seçicinin dakikaları görüntülediği aralığı ayarlar:

datePickerView.MinuteInterval = 10;

Mod

Tarih seçiciler aşağıda açıklanan dört modu destekler:

UIDatePickerMode.Time

UIDatePickerMode.Time saati bir saat ve dakika seçici ve isteğe bağlı AM veya PM gösterimiyle görüntüler:

datePickerView.Mode = UIDatePickerMode.Time;

UIDatePickerMode.Time

UIDatePickerMode.Date

UIDatePickerMode.Date ay, gün ve yıl seçicisi olan tarihi görüntüler:

datePickerView.Mode = UIDatePickerMode.Date;

UIDatePickerMode.Date

Seçicilerin sırası, varsayılan olarak sistem yerel ayarını kullanan tarih seçicinin yerel ayarına bağlıdır. Yukarıdaki görüntüde yerel ayardaki en_US seçicilerin düzeni gösterilir, ancak aşağıdakiler sırayı Gün | olarak değiştirir Ay | Yıl:

datePickerView.Locale = NSLocale.FromLocaleIdentifier("en_GB");

Gün | Ay | Yıl

UIDatePickerMode.DateAndTime

UIDatePickerMode.DateAndTime tarihin kısaltılmış bir görünümünü, saat ve dakika cinsinden saati ve isteğe bağlı AM veya PM gösterimini görüntüler (12 veya 24 saatlik saatin kullanılıp kullanılmadığına bağlı olarak):

datePickerView.Mode = UIDatePickerMode.DateAndTime;

UIDatePickerMode.DateAndTime

gibi UIDatePickerMode.Date, seçicilerin sırası ve 12 veya 24 saatlik bir saatin kullanımı, tarih seçicinin yerel ayarına bağlıdır.

İpucu

Date Bir tarih seçicinin değerini , UIDatePickerMode.Dateveya UIDatePickerMode.DateAndTimemodunda UIDatePickerMode.Timeyakalamak için özelliğini kullanın. Bu değer olarak NSDatedepolanır.

UIDatePickerMode.CountDownTimer

UIDatePickerMode.CountDownTimer saat ve dakika değerlerini görüntüler:

datePickerView.Mode = UIDatePickerMode.CountDownTimer;

özelliği, CountDownDuration bir tarih seçicinin değerini modda UIDatePickerMode.CountDownTimer yakalar. Örneğin, geçerli tarihe geri sayım değerini eklemek için:

var currentTime = NSDate.Now;
var countDownTimerTime = datePickerView.CountDownDuration;
var finishCountdown = currentTime.AddSeconds(countDownTimerTime);

dateLabel.Text = "Alarm set for:" + coundownTimeformat.ToString(finishCountdown);

NSDateFormatter

bir NSDatebiçimlendirmek için kullanın NSDateFormatter.

kullanmak NSDateFormatteriçin yöntemini çağır.ToString Örneğin:

var date = NSDate.Now;
var formatter = new NSDateFormatter();
formatter.DateStyle = NSDateFormatterStyle.Full;
formatter.TimeStyle = NSDateFormatterStyle.Full;
var formattedDate = formatter.ToString(d);
// Tuesday, August 14, 2018 at 11:20:42 PM Mountain Daylight Time
DateFormat

özelliği DateFormat (dize), NSDateFormatter özelleştirilebilir bir tarih biçimi belirtimi sağlar:

NSDateFormatter dateFormat = new NSDateFormatter();
dateFormat.DateFormat = "yyyy-MM-dd";
TimeStyle

TimeStyle özelliği (bir NSDateFormatterStyle türü, NSDateFormatter önceden belirlenmiş stiller temelinde zaman biçimlendirmesini belirtir:

NSDateFormatter timeFormat = new NSDateFormatter();
timeFormat.TimeStyle = NSDateFormatterStyle.Short;

Çeşitli NSDateFormatterStyle değerler zamanları aşağıdaki gibi görüntüler:

  • NSDateFormatterStyle.Full: 19:46:00 Doğu Yaz Saati
  • NSDateFormatterStyle.Long: 19:47:00 EDT
  • NSDateFormatterStyle.Medium: 19:47:00
  • NSDateFormatterSytle.Short: 19:47
DateStyle

bir DateStyle öğesinin NSDateFormatter özelliği (anNSDateFormatterStyle), önceden belirlenmiş stiller temelinde tarih biçimlendirmesini belirtir:

NSDateFormatter dateTimeformat = new NSDateFormatter();
dateTimeformat.DateStyle = NSDateFormatterStyle.Long;

Çeşitli NSDateFormatterStyle değerler tarihleri aşağıdaki gibi görüntüler:

  • NSDateFormatterStyle.Full: 2 Ağustos 2017 Çarşamba, 19:48
  • NSDateFormatterStyle.Long: 2 Ağustos 2017, 19:49
  • NSDateFormatterStyle.Medium: 2 Ağustos 2017, 19:49
  • NSDateFormatterStyle.Short: 2/8/17, 19:50

Not

DateFormat ve DateStyle/TimeStyle tarih ve saat biçimlendirmesini belirtmenin farklı yollarını sağlayın. En son ayarlanan özellikler tarih biçimlendiricinin çıkışını belirler.