我的应用程序是飞行员的日志,我想让用户选择将应用程序放在他们选择的时区。航空公司的飞行员可能会飞越世界各地,但在输入航班信息时必须参考他们的基地时区。我想提供一个UI,允许他们选择一个时区选项,如“本地”(设备本地,取决于他们的位置),“UTC”,然后硬“自定义”。
我正在使用MonoTouch.Dialog,它允许您连接一个集合,但问题是在iOS中,时区列表相当长。我使用System.TimeZoneInfo命名空间来检索时区列表,就像在Windows中一样。但是,iOS使用诸如“美国/纽约,美国/ XYZ等”的演示。因此,为了保持这个列表的可管理性,我需要通过拆分来解决这个问题。我可以首先提供一个国家列表,用户将点击它,然后一个辅助列表将出现在UITableView中,这是区域比如“纽约”。然后,我将捕获时区并使用System.TimeZoneInfo方法将UTC转换为自定义时区。
我的问题是,特别是在MonoTouch.Dialog中,我可以拥有一个集合,然后是一个子集合。即具有披露指标的国家的UITableView,将您带到该国的地区?
在同样的说明中,还有其他人在iOS(Xcode或MonoTouch)中实现了“时区”选择器/选择器吗?
感谢您的想法并帮助解决此问题。
答案 0 :(得分:5)
以下内容将为您提供所需的用户界面:
var groups = from tz in TimeZoneInfo.GetSystemTimeZones ()
let name = tz.ToString ()
let idx = name.IndexOf ('/')
where idx != -1
let first = name.Substring (0, idx)
group tz by first into g
select new { Region = g.Key, Zones=g };
var root = new RootElement ("TimeZones"){
new Section ("Regions"){
from r in groups
select (Element) new RootElement (r.Region.ToString ()){
new Section () {
from z in r.Zones
select (Element) new StringElement (z.ToString ())
}
}
}
};
dvc = new DialogViewController (root);
它产生这个UI:
Main UI http://tirania.org/s/c2219510.png
嵌套元素如下所示:
答案 1 :(得分:1)
在同样的说明中,还有其他人在iOS(Xcode或MonoTouch)中实现了“时区”选择器/选择器吗?
我还没有看到一个人完全这个。不过,此article会向您展示如何使用UIPickerView
来实现您自己的选择器(接近您想要的)。将其转换为C#应该不会太难。
一旦拥有了自己的UITimeZonePicker
,就可以轻松为MonoTouch.Dialog创建TimeZoneElement
(主要是复制/粘贴DateElement
)。