Требуется разработать универсальный селектор позволяющий реализовать одиночный и множественный выбор из списка. Известно:
- Приложение будет только на iPAD (используйте UIPopoverController);
- Каждый элемент списка должен иметь ключевой индекс.
- Наряду с текстом списка должна быть возможность задать пиктограмму для каждого элемента списка. Пиктограмма располагается слева, перед текстом. Пиктограмма или текст могут отсутствовать. Все пиктограммы одинакового размера. Размер картинки заранее неизвестен.
- Если хоть один пункт списка содержит пиктограмму, весь текст в списке содержит отступ с учетом ширины пиктограммы.
- Высота каждого элемента списка определяется исходя из размера текста. Однако должна быть возможность задать минимальную высоту.
- Должна быть возможность задать шрифт, размер шрифта, цвет текста, цвет фона. Все элементы списка имеют одинаковый стиль.
- Должна быть возможность задать стиль таблицы содержащей список UITableViewStylePlain или UITableViewStyleGrouped.
- Должна быть возможность задать разделы списка. Названия разделов не выбираются.
- Должна быть возможность задать заголовок UIPopoverController. В левом верхнем углу должна быть кнопка «Закрыть». Текст на кнопке задается как свойство селектора.
- Под заголовком, над списком, должна быть возможность задать текст комментария либо панель поиска. И то и другое может отсутствовать. Высота текстовой области рассчитывается исходя из размера текста или высоты панели поиска.
- Поиск должен производиться по элементам списка без учета регистра.
- Внизу, под списком должна быть возможность задать текст комментария. Высота текстовой области расчетная.
- Для комментариев как сверху так и снизу должна быть возможность задать шрифт, размер шрифта, цвет текста, цвет фона.
- В режиме множественного выбора у UIPopoverControllter должен появиться нижний тулбар с 2-я кнопками реализующие функции: выбрать все, снять выбор. Текст на кнопках задается как свойства селектора.
- После выбора каждого из пунктов меню, в предварительно заданном делегате должен вызываться метод со списком индексов выбранных элементов.
- При вводе текста в поле поиска высота панели селектора должна учитывать появление/уход клавиатуры.