Я буду использовать DatePicker в нескольких местах в моем приложении. Я не хочу «загромождать» каждый viewController методами делегирования для UIPickerViewDelegate и UIPickerDatasource, плюс я буду делать одни и те же методы делегирования снова и снова.
Каждый раз, когда работает DatePicker, его единственная цель - сдвинуть половину экрана вверх, позволить пользователю выбрать дату, а затем снова исчезнуть.
Я размышлял над оберткой viewController (DatePickerViewController), которая реализовала методы делегата datePicker, а затем выполнила NSNotification со значением, которое выбрал пользователь, что снова было перехвачено в viewController, создающем экземпляр DatePickerViewController.
Это сделало бы меня отделенным datePicker и позволило бы viewController, создающему экземпляр datePicker, ничего не знает о DatePickerDelegate, но просто знал, что потенциально может прийти уведомление, содержащее NSDate. Мне кажется рациональным, как то, что я бы делал на других языках. Но, пожалуйста, поправьте меня, если я выкопаю себе дыру здесь :)
Когда я начал разбивать это, я столкнулся с некоторыми трудностями, я не очень опытен в Objective C и Какао.
Я могу построить viewController, который в своем viewDidLoad представляет DatePicker, при запуске которого только это приведет к пустому белому экрану с datePicker в нижней половине экрана. Если я использую «presentModalViewController» из viewController, который создает экземпляр (пользовательского) DatePickerViewController, он, конечно, скользит вверх и покрывает весь экран. Я бы хотел, чтобы у пользователя оставалась видимая половина изображения. Очень похоже на настройку времени в событии в приложении iCal. (за исключением того, что они помещают новый viewController в стек). Ааа, только что понял, что я имею в виду то же самое, что клавиатура, когда она скользит и закрывает половину экрана.
Так что я думаю, что моя главная проблема: вы можете создать viewController, который ведет себя как клавиатура при добавлении в представление. Но сделайте все это в ViewController, который добавлен, а не в контроллере, создающем представление.
Надеюсь, это имеет смысл:)
Спасибо