Ну, я никогда так не делал.
Должно ли оно быть в ячейке, или вы можете использовать для этого заголовок или нижний колонтитул таблицы?(Я бы не предложил представление верхнего / нижнего колонтитула раздела.)
Предполагая, что оно находится внутри UITableViewCell.Да, я бы подкласс UITableViewCell.Сделал это много.В этом случае объект вашей ячейки может быть делегатом источника данных средства выбора.Для этого вашему подклассу UITableViewCell (предположим, вы называете его MyTableViewCell) необходимо выполнить соответствующий протокол.Вы добавляете этот UIPickerView программно в метод init (initWithStyle) MyTableViewCell.Для макета внутри ячейки таблицы вы должны перезаписать метод layoutSubviews.Если ваше приложение можно повернуть в альбомную и портретную ориентации и / или если ваше приложение предназначено также для работы на iPad, то этот метод должен динамически учитывать границы таблицы.(Границы экрана или ветряные границы часто используются здесь, но это не сохраняется, когда таблица отображается в разделенном главном представлении или всплывающем представлении на iPad.)
Строго говоря, MyTableViewCell не должен быть делегатом источника данных,просто потому, что это элемент представления, и объекты представления не должны управлять какой-либо бизнес-логикой в шаблоне проектирования MVC.Более разумной была бы реализация некоторого выделенного контроллера представления для вашей ячейки табличного представления, который выполняет протокол и назначается в качестве делегата.Тем не менее, оба будут работать.В случае, если это единственный вид выбора в вашей продаже, вы можете легко использовать свой подкласс UITableViewController, даже не помечая UIPickerView.
Альтернативой созданию подкласса UITableViewCell является создание UIPickerView в методе cellForRowAtIndexPath вашего tableViewController.Это хорошо для приложений с одиночной ориентацией.Однако вы можете настроить его таким образом, чтобы он автоматически переупорядочивал свой UIPickerView.
В любом случае вам следует перезаписать метод heightForRowAtIndexPath объекта UITableViewController, когда ваши табличные представления больше не имеют такую же высоту.Если все они имеют одинаковую высоту, вы можете просто установить свойство rowHeight вашего UITableView.