Как я могу получить номер строки каждого компонента в UIPickerView

Как я могу получить номер строки каждого компонента в UIPickerView?

У меня есть UIPickerView из 3 компонентов:

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

И второй вопрос: как изменить ширину каждого компонента?


person mamrezo    schedule 02.12.2010    source источник
comment
Вы имеете в виду, сколько строк в каждом компоненте?   -  person Sam Ritchie    schedule 02.12.2010
comment
Я думаю, вы обычно решаете это через свой источник данных, не так ли?   -  person vodkhang    schedule 02.12.2010
comment
нет, я имею в виду, какая строка выбрана в каждом компоненте?   -  person mamrezo    schedule 02.12.2010


Ответы (1)


Вероятно, вы заполняете UIPickerView из массива; используйте параметр row в вызове

[dataArray objectAtIndex:row];

чтобы получить данные. Если вам нужно узнать общее количество строк, просто используйте [dataArray count];, чтобы получить размер вашего источника данных.

РЕДАКТИРОВАТЬ: я забыл, что если вы следуете протоколу, вы реализовали этот метод:

-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

    NSInteger numRows = 0;
    switch (component) {
    case 0:
        numRows = 6;
        break;
    case 1:
        numRows = 3;
        break;
    case 2:
        numRows = 2;
        break;
    default:
        break;
    }
    return numRows;
}

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

РЕДАКТИРОВАТЬ 2: если вы хотите получить текущую выбранную строку в каждом компоненте, используйте:

[yourPickerView selectedRowInComponent:1];

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

person Sam Ritchie    schedule 02.12.2010
comment
если я использую это, у меня есть все строки UIPickerView во всех компонентах - person mamrezo; 02.12.2010
comment
помните, мне нужно количество строк в каждом компоненте, а не во всех - person mamrezo; 02.12.2010
comment
я действительно хочу создать uipickeview, например uidatepicker в uidatepicker, когда вы выбираете строку компонента, uidatepicker возвращает номер строки в каждом компоненте, чтобы отправить это - person mamrezo; 02.12.2010
comment
хорошо, еще одно редактирование, это должно быть то, что вы ищете. Кстати, в документации UIPickerView есть вся эта информация. - person Sam Ritchie; 02.12.2010
comment
у меня есть предупреждение: локальное объявление 'pickerView' скрывает используемую переменную экземпляра [pickerView selectedRowInComponent: 1] - person mamrezo; 02.12.2010
comment
это потому, что вы, вероятно, пытаетесь вызвать его из одного из других методов, где pickerView предоставляется в качестве параметра. Попробуйте использовать self.pickerView вместо pickerView. Я ответил на ваш вопрос? - person Sam Ritchie; 02.12.2010
comment
когда я использую self [self.pickerView selectedRowInComponent: 1], у меня возникает ошибка: доступ к неизвестному методу получения 'pickerView' - person mamrezo; 02.12.2010
comment
Это выходит за рамки вопроса... вам действительно нужно иметь свойство pickerView и включить @synthesize pickerView в свою реализацию. Когда вы создали свой pickerView, вам нужно присвоить его переменной экземпляра. - person Sam Ritchie; 02.12.2010
comment
И второй вопрос: как изменить ширину каждого компонента? - person mamrezo; 02.12.2010
comment
stackoverflow.com/questions/256556/ - person Sam Ritchie; 02.12.2010