我现在使用的代码无效,每次加载它并在UIPickerView中滚动它会自动使用“else”语句的值。
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if ([pickerView selectedRowInComponent:0]) {
[label setText:@"row1"];
}
if ([pickerView selectedRowInComponent:3]) {
[label setText:@"row2"];
}
if ([pickerView selectedRowInComponent:4]) {
[label setText:@"row3"];
}
else {
[label setText:@"row else"];
}
}
我做错了什么?
答案 0 :(得分:1)
试试这个:
因为您在返回类型中使用numberOfComponentsInPickerView = 1。
那么,为什么要与rowInComponent api进行比较。
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component {
if(row == 0)
[label setText:@"row3"];
else if(row == 1)
[label setText:@"row3"];
else if(row == 3)
[label setText:@"row3"];
else
[label setText:@"other"]; // this line will be called when row will be 2 or >3
}
有多少行 - pickerView:numberOfRowsInComponent:方法。
答案 1 :(得分:0)
使用与此类似的代码。
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
{
if (pickerView.tag==1)
{
if (row == 0)
{
[label setText:@"row1"];
}
else if (row == 1)
{
[label setText:@"row2"];
}
else if (row == 2)
{
[label setText:@"row3"];
}
else{
[label setText:@"row else"];
}
}
}
答案 2 :(得分:0)
尝试将if语句改为“else if”语句,而不是创建多个if语句。
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component {
if ([pickerView selectedRowInComponent:0]) {
[label setText:@"row1"];
}
else if ([pickerView selectedRowInComponent:3]) {
[label setText:@"row2"];
}
else if ([pickerView selectedRowInComponent:4]) {
[label setText:@"row3"];
}
else {
[label setText:@"row else"];
}
}
答案 3 :(得分:0)
原因是它没有满足任何这些条件,selectedRowInComponent返回NSInteger,而不是布尔值。因此,您必须更新if条件以包含值,例如
[selectedRowInComponent:1]==1
答案 4 :(得分:0)
您的所有条件都基于此方法的返回值:selectedRowInComponent
返回一个整数值。因为它返回该组件中所选行的索引,所以您的值可以是-1到X,X是组件中有多少行。
如果您希望在其中一行上选择任何内容时更新文本,则需要查看所选行索引是否大于-1,这意味着在选择器视图中实际选择了一行。
所以尝试更像这样的东西:
if ([pickerView selectedRowInComponent:0] > -1) {
[label setText:@"row1"];
}
else if ([pickerView selectedRowInComponent:3] > -1) {
[label setText:@"row2"];
}
else if ([pickerView selectedRowInComponent:4] > -1) {
[label setText:@"row3"];
}
else {
[label setText:@"row else"];
}