2013-11-18 3 views
0

Мне нужен вид выбора ведьму я могу выбрать мульти значения, как и «выберите вход» в HTML:UIPickerView мульти выбор на ios7

Select input rendered in Safari

В iOS6, я сделал это с пользовательской точки зрения, созданной в UIPickerViewDelegate (pickerView: viewForRow: forComponent: reusingView :) и UIButton в каждой строке, но с ios7 пользовательский вид не получил событие touch.

Можно ли это сделать в ios7?

ответ

4

DrDisc подтвердил, что обработать событие касания непосредственно из представления строки с ios7 невозможно.

Но можно:

  1. добавить Tap Жест к UIPickerView
  2. retrive выбранного вида
  3. вызова метода для включения/выключения строки

    int row = [self.pickerView selectedRowInComponent:0]; 
    UIView *rowView = [self.pickerView viewForRow:row forComponent:0]; 
    if([rowView isKindOfClass:[YouCustomView class]]) 
    { 
        [(YouCustomView*)rowView toggleCheck]; 
        [self.pickerView reloadAllComponents]; 
    } 
    

Я думаю, что это более естественно, чем кнопка, чтобы проверить/снять отметку, но мы потерял возможность выбора другой строки с нажатием на нее.

+0

Добавить жест нажатия не работает на iOS9. Используйте метод делегирования didSelectRow как упомянутые работы DrDisc. – flashlib

2

Насколько я знаю, это невозможно. Одним из вариантов является использование метода делегата UIPickerView в:

- (void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

Вы можете сохранить выделение в массиве и изменять текст, переданный через из источника данных в какой-то текст выбора («х Selection 1»).

В качестве альтернативы вы можете иметь кнопку «выбрать элемент», которая добавит отображаемое в данный момент значение к выбранному массиву.

Когда пользователь нажимает кнопку, вы можете просмотреть выбранный массив для выбранных.

Это не лучшие методы, это только мои первоначальные мысли.

Смежные вопросы