Главная » iPhone » Выборщики iPhone

0

Выборщики (pickers)— это щелкающие колесики для iPhone: большие вращающиеся диски, которые могут содержать любое количество различных вариантов. Выборщики используются вместо раскрывающихся меню для предоставления пользователю графически разнообразного интерфейса выбора. Являющийся близким родственником элемента управления класс uiPickerView был создан как полный класс вида по причине его абсолютного размера на экране. Это позволяет использовать его практически везде, включая основной вид, или в связке с таблицами предпочтений.

Создание выборщика

Класс UiPickerView содержит объект ulPickerTable, который порожден от объекта uiTable. Как и остальные таблицы, UlPickerTable использует привязку данных (data binding). В отличие от другиех табличных классов источник данных выборщика не задается методом dataSource. Вместо этого для получения запросов на привязку данных помимо событий выборщика используется делегат. Скорее всего, это было сделано для того, чтобы придать классу uiPickerView простоту элемента управления. Привязка данных UiPickerView достаточно мала, чтобы хорошенько спрятаться в управляющем виде, хотя сам выборщик также может быть унаследован для создания замкнутого выборщика.

При создании вида выборщика используйте окно высотой в 200 пикселов. Инициализация выборщика с любым другим размером фрейма приведет к игнорированию заданного размера. Выборщик может быть помещен в любом месте другого вида, но обычно располагается внизу:

UiPickerView *pickerView = [ [ UiPickerView alloc ]

initWithFrame: CGRectMake(0, 280, 320, 200)]; [ pickerView setDelegate: self ];

Сбор свойств выборщика

Чтобы переключить выводимые звуки щелчков, как правило, слышимых при прокручивании выборщика, воспользуйтесь методом setSoundsEnabled: [ pickerView setSoundsEnabled: YES ];

Если выборщик должен позволять выбор нескольких элементов, воспользуйтесь методом setAllowsMultipleSelection: t pickerView setAllowsMultipleSelection: YES ];

Таблица выборщика

После создания вида выборщика вы должны указать ему создать лежащий в основе объект UlPickerTable.

Этот объект хранит различные элементы и структуру таблицы, используемую выборщиком:

UIPickerTable *pickerTable = [ pickerView _createTableWithFrame: CGRectMake(0, 0, 320, 200) forComponent: nil

];

Как и в случае с UITable, таблица выборщика должна иметь хотя бы один столбец. Он создается как объект UITableColumn и назначается виду выборщика С ПОМОЩЬЮ метода columnForTable: column = t ( UITableColumn alloc ] initWithTitle: @"Column title" identifier:@"mycolumn" width: 320

1;

( pickerView columnForTable: column ];

После создания вида, таблицы и столбца в классе источника данных необходимо создать три метода:

?   numberOfColumnsinPickerView— этот метод должен возвращать в качестве значения 1, если вы создаете многостолбцовый вид выборщика;

?   n umberOf Rows inColumn— в виде выборщика каждый столбец может иметь различное количество строк. Этот метод должен возвращать полное количество строк для столбца с указанным номером;

?   tableCellForRow— этот метод возвращает действительное количество объектов UITableCell для каждой строки в таблице. Как правило, это просто пустые объекты ячеек с заголовком. Однако можно использовать и более сложные классы ячеек таблицы, например, класс

UIImageAnaTextTableCell, рассмотренный в главе 3.

Прототипы и функция для этих методов будут показаны в примере далее в этой главе.

Отображение выборщика

Создав и сконфигурировав вид выборщика, а также написав привязку данных, вы подготовились к прикреплению выборщика к вашему управляющему виду:

[ mainView addSubview: pickerView ];

Считывание выборщика

Чтобы получить порядковый номер выбранного столбца в виде выборщика,

воспользуйтесь методом selectedRow For Column вида:

int selectedRow = [ pickerView selectedRowForColumn: 0 ];

Поскольку таблица выборщика создается самим видом выборщика, то трудно наследовать таблицу для использования метода tableRowSelected. Более удобный способ считывать значение в режиме реального времени — это создать подкласс класса uiPickerview, а затем подменить метод mouse Down: – (void)mouseDown:(struct _ _GSEvent *)event {

int selectedRow = [ self selectedRowForColumn: 0 ]; [ super mouseDown: event ];

}

Источник: Здзиарски Дж. iPhone. Разработка приложений с открытым кодом: Пер„с англ. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2009. — 368 е.: ил.

По теме:

  • Комментарии