Как создать средство выбора часового пояса для iOS? - PullRequest
4 голосов
/ 11 января 2012

Мое приложение - это журнал для пилотов, и я хотел бы дать пользователю возможность поместить приложение в выбранный им часовой пояс. Пилоты авиакомпаний могут летать по всему миру, но при вводе информации о рейсах им необходимо указывать свой часовой пояс. Я хочу предложить пользовательский интерфейс, который позволяет им выбирать опцию часового пояса, такую ​​как «Локальный» (локальный для устройства, в зависимости от их местоположения), «UTC», а затем жесткий «пользовательский».

Я использую MonoTouch.Dialog, который позволяет подключить коллекцию, но проблема в iOS, список часовых поясов довольно длинный. Я использую пространство имен System.TimeZoneInfo для получения списка часовых поясов, как в Windows. Однако iOS использует презентацию, такую ​​как «Соединенные Штаты / Нью-Йорк, Соединенные Штаты / XYZ и т. Д.». Таким образом, чтобы сохранить этот список управляемым, мне нужно разбить его, разделив на /, чтобы я мог сначала представить список стран, пользователь коснется его, а затем появится дополнительный список в UITableView, который является регионами. такие как "Нью-Йорк". Затем я запишу часовой пояс и использую методы System.TimeZoneInfo для преобразования из UTC в пользовательский часовой пояс.

У меня вопрос, как, в частности, в MonoTouch.Dialog, я могу иметь коллекцию, а затем подколлекцию. то есть UITableView стран с индикатором раскрытия, который ведет вас в регионы для страны?

В этой же заметке кто-нибудь еще использовал селектор / селектор "часовых поясов" в iOS (Xcode или MonoTouch)?

Спасибо за ваши идеи и помощь в решении этой проблемы.

Ответы [ 2 ]

5 голосов
/ 12 января 2012

Следующая информация предоставит вам искомый пользовательский интерфейс:

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);

Создает этот пользовательский интерфейс:

Основной интерфейс http://tirania.org/s/c2219510.png

И вложенные элементывыглядеть так:

Вложенный http://tirania.org/s/bb0d68da.png

1 голос
/ 12 января 2012

В этой же заметке, кто-нибудь еще реализовал селектор / селектор "часовых поясов" в iOS (Xcode или MonoTouch)?

Я не видел, чтобы кто-то точно делал это.Однако в этой статье показано, как использовать UIPickerView для реализации ваших собственных сборщиков (близких к тому, что вы хотите).Не должно быть слишком сложно преобразовать это в C #.

Как только у вас есть собственный UITimeZonePicker, тогда должно быть легко создать TimeZoneElement для MonoTouch.Dialog (в основном копирование / вставка DateElement).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...