Добавление UIPickerViews в представление с другими элементами

Newbie Cocoa Touch вопрос:

Я стремлюсь к интерфейсу с UIPickerView и UIButton.

Средство выбора нуждается в делегате и источнике данных, которые я изначально написал как отдельный класс PickerController, реализующий правильные протоколы. Однако теперь я не уверен, как использовать интерфейсный конструктор, чтобы связать все воедино.

Если у меня есть отдельный файл.xib для PickerController (с только UIPickerView в нем), и я добавляю представление PickerController как подпредставление в главном контроллере, UIPickerView отображается правильно, но UIButton (который находится в основном.xib файл) нет. Это как если бы добавить представление PickerController занимает все окно и скрывает основной вид.

Я попытался избавиться от отдельного файла.xib и вместо этого добавить UIPickerView непосредственно в основной файл.xib. Однако с этой конфигурацией я не уверен, как настроить делегат и источник данных, так как владелец файла (основной контроллер) отличается от <UIPickerViewDataSource, UIPickerViewDelegate> класс, который я написал (PickerController).

Некоторая помощь в следующем: будет здорово:

  • у меня должен быть отдельный класс для каждого UIPickerView?
  • я должен иметь отдельный файл.xib для UIPickerView?
  • если делегат и источник данных находятся в другом классе с владельцем файла, как мне их соединить?
  • Могу ли я добавить подпредставление к основному виду, чтобы оно не мешало элементам основного вида?

1 ответ

Решение

Можно делать то, что вы хотите, но это выходит далеко за пределы самого быстрого пути, чтобы достичь желаемого результата. Если вы новичок, я бы пока придерживался простых путей, потому что Cocoa Touch уже достаточно для изучения.

Так. Самый быстрый путь - создать подкласс основного представления класса PickerController. Затем вы можете создать файл IB, использовать класс основного представления в качестве владельца файла и подключить источники данных и делегатов.

По вашим оценкам в Stackru я предполагаю, что вы опытный разработчик, который запускает разработку для iPhone. Приведенный выше быстрый подход, вероятно, пахнет смешно, потому что подклассификация не совсем подходит. Такое чувство, что вы должны иметь возможность комбинировать контроллеры, смешивая их вместе для создания пользовательского интерфейса. И это возможно, но в конечном итоге это требует много работы и головной боли, если вы только начинаете. Я обнаружил, что эстетическая отдача от более элегантного подхода в большинстве случаев не стоит дополнительных усилий.

Другие вопросы по тегам