TOC
Jest to tips & tricks działający dla Xamarin.iOS
W dzisiejszym odcinku chciałbym pokazać wam jak dodać kontrolkę daty „iOS style” (z takim fajnym rozwijaniem wierszy jak w np. w kalendarzu).
Xamarin.iOS – Jak pokazać kontrolkę daty tak jak w kalendarzu iOS
Ja w swoim przykładzie użyłem na Storyboard kontrolki TableViewController. Wywyższa kontrolka zapewnia nam funkcjonalność kontrolki TableView i ScrollView w jednym.
Następnie należy skonfigurować sekcji i wiersze, dodajemy kontrolkę DatePicker i wysokość wiersza ustawiamy na 216.
Reszta magii dzieje się w kodzie… Cały kod źródłowy można znaleźć na GitHub
Kod
[code lang=”csharp”]
using Foundation;
using System;
using UIKit;
namespace DatePickerDemo
{
public partial class MainViewController : UITableViewController
{
private NSDateFormatter formatter;
private bool showDatePicker;
public MainViewController (IntPtr handle) : base (handle)
{
formatter = new NSDateFormatter();
formatter.DateStyle = NSDateFormatterStyle.Short;
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
dateLabel.Text = formatter.ToString(datePicker.Date);
datePicker.ValueChanged += DatePicker_ValueChanged;
}
public override nfloat GetHeightForRow(UITableView tableView, NSIndexPath indexPath)
{
nfloat rowHeight = tableView.RowHeight;
if(indexPath.Section == 1 && indexPath.Row == 2)
{
rowHeight = 0;
}
if (showDatePicker && (indexPath.Section == 1 && indexPath.Row ==2))
{
rowHeight = 216;
}
return rowHeight;
}
public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
tableView.BeginUpdates();
if (indexPath.Section == 1 && indexPath.Row == 1)
{
showDatePicker = !showDatePicker;
}
tableView.DeselectRow(indexPath, true);
tableView.EndUpdates();
}
private void DatePicker_ValueChanged(object sender, EventArgs e)
{
dateLabel.Text = formatter.ToString(datePicker.Date);
}
}
}
[/code]
真诚赞赏,手留余香
使用微信扫描二维码完成支付
comments powered by Disqus