如何更改每个组件中的行数 我有这个:
- (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return 3;
}
但这会更改所有组件行号
接下来的问题是:如何更改第三个组件中的值与UIDatePicker相同:例如:在日期(1月)中,天数为31,但是(2月)天数为(29/28),第三个组件必须变化和值将在1-29或1-28之间。
答案 0 :(得分: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;
}
}
答案 1 :(得分:1)
取决于您的需求。返回不同的号码。
- (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if(CONDITION 1)
return 2;
else if(CONDITION 2)
return 3;
}
答案 2 :(得分: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 has 31 rows for example days
return 31;
}
}
关于计算第二个组件中行数(天)的第二个问题,您必须保留一个变量来存储选择的月份。根据所选月份,您可以保留一个变量来存储第二个组件中的行数(天)。让变量为天,当第一个组件(月)的选择发生变化时,您必须更新该变量。然后,您必须按如下方式更改以前的代码:
- (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;
}
}
希望你能理解......