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