Как я могу изменить количество строк в каждом компоненте - PullRequest
1 голос
/ 30 ноября 2010

alt text

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

- (NSInteger) pickerView:(UIPickerView *)pickerView  numberOfRowsInComponent:(NSInteger)component
{
return 3;
}

НО это изменит все номера строк компонентов,

И следующий вопрос: как я могу изменить значения в третьем компоненте, например, UIDatePicker: например: в дате (в январе) дни составляют 31, а (в феврале) дни (29/28), третьи компоненты должны измениться, и значениябудет между 1-29 или 1-28.

Ответы [ 3 ]

8 голосов
/ 30 ноября 2010

Каждый сборщик вызывает -pickerView:numberOfRowsInComponent: и запрашивает количество строк для каждого компонента. Так что этот метод вызывается три раза, потому что у вас есть три компонента. Таким образом, вам нужно возвращать разные значения для компонентов. Вы получаете NSInteger в переменной component, чтобы указать, какой компонент запрашивается:

- (NSInteger) pickerView:(UIPickerView *)pickerView  numberOfRowsInComponent:(NSInteger)component
{
    switch(component) 
    {
        case 0: // first component has 42 rows
            return 42;
        case 1: // second component has 21 rows
            return 21;
        case 2: // third component has only two rows
            return 2;
    }
}
1 голос
/ 30 ноября 2010

Вы можете изменить количество строк для каждого компонента в методе


- (NSInteger) pickerView:(UIPickerView *)pickerView  numberOfRowsInComponent:(NSInteger)component
{
    switch(component) 
    {
        case 0: // first component has 12 rows for example months
            return 12;
        case 1: // second component has 31 rows for example days

           return 31;
    }
}

А что касается вашего второго вопроса, чтобы рассчитать, сколько строк (дней) будет во 2-м компоненте, вы должны сохранитьпеременная для хранения, какой месяц выбран.Основываясь на выбранном месяце, вы можете сохранить переменную для хранения количества строк (дней) во втором компоненте.Пусть переменная days , которую вы должны обновить при изменении выбора 1-го компонента (месяца).Затем вы должны просто изменить предыдущие коды следующим образом:

- (NSInteger) pickerView:(UIPickerView *)pickerView  numberOfRowsInComponent:(NSInteger)component
{
    switch(component) 
    {
        case 0: // first component has 12 rows for example months
            return 12;
        case 1: // second component to show days            
           return days;
    }
}

Надеюсь, вы поймете ...

1 голос
/ 30 ноября 2010

Зависит от вашей потребности. Вернуть другой номер.

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

if(CONDITION 1)
return 2;
else if(CONDITION 2)
return 3;
}
...