Возможен ли повторный выбор даты с помощью Interface Builder? - PullRequest
0 голосов
/ 19 декабря 2011

Мой вопрос похож на iPhone: создайте повторно используемый компонент (элемент управления), в котором есть несколько компонентов Interface Builder и некоторый код , но это не совсем решает мою проблему. Кроме того, сейчас год, и кто знает, что изменилось за это время.

Я занимаюсь разработкой приложения для iPad с использованием Interface Builder и раскадровки. Мне нужно одно и то же всплывающее окно выбора даты в нескольких местах, но я не смог выяснить, как повторно использовать один и тот же компонент из разных представлений. Я потратил пару часов на это, пробуя что-то, читал документы, гуглил и переполнял стек.

В настоящее время я сделал хакерскую работу, которая дает мне функциональность, но это не красиво. На сегодняшний день наиболее перспективным подходом является переход от кнопки к новому UIViewController, который содержит средство выбора даты и некоторые другие виджеты. Показывает всплывающее окно выбора даты при нажатии кнопки, а также анимацию выбора даты при нажатии за ее пределами.

Однако я не могу понять, как использовать это из нескольких кнопок. Я пробовал делегатов, но я где-то облажался.

1 Ответ

2 голосов
/ 20 декабря 2011

Вы можете реализовать контроллер представления, который имеет указатель даты в своем представлении.Давайте назовем это DatePickerViewController.Этот класс может реализовывать протокол, например datePickerViewController:pickedDate: или что-то в этом роде.Когда дата выбрана с помощью этого средства выбора даты, он может сообщить своему делегату о выбранной дате.

И затем, когда вам нужно представить эту кнопку выбора даты с помощью кнопки, вы можете создать новый UIPopoverController, создать новый экземпляр DatePickerViewController, передать этот экземпляр поповеру как contentViewController ипредставить поповер контроллер с вашей кнопки.

Чтобы получить информацию о выбранной дате, когда вы создаете DatePickerViewController, вы можете установить свой контроллер представления delegate его, чтобы вы могли знать,о выбранных датах.

...