如何更改每个组件中的行数

mam*_*ezo 1 iphone objective-c uipickerview

替代文字

如何更改每个组件中的行数我有:

- (NSInteger) pickerView:(UIPickerView *)pickerView  numberOfRowsInComponent:(NSInteger)component
{
return 3;
}
Run Code Online (Sandbox Code Playgroud)

但这会改变所有组件行号,

接下来的问题是:如何更改第三个组件中的值,如UIDatePicker:例如:在日期(1月)中,天数为31,但是(2月)天数为(29/28),第三个组件必须更改和值将在1-29或1-28之间.

Bjö*_*lek 8

每个选择器都会调用-pickerView:numberOfRowsInComponent:并询问每个组件的行数.所以这个方法被调用三次,因为你有三个组件.因此,您需要为组件返回不同的值.您在component变量中获得一个NSInteger 以指示要求的组件:

- (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;
    }
}
Run Code Online (Sandbox Code Playgroud)