这是我在一个视图控制器中的两个选择器视图的代码。然而它不适合我。
#pragma mark UIPickerViewDelegate methods
//PickerViewController.m
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
switch ([thePickerView tag]) {
case 1: //purpose picker
return [m_arrPurpose count];
case 2: //second picker
return [m_arrSweep count];
default:
return 0;
break;
}
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
switch ([thePickerView tag]) {
case 1: //purpose picker
{
//cost.text = @"Test";
Purpose *prp = [m_arrPurpose objectAtIndex:row];
return [prp m_purposeName];
}
case 2: //second picker
{
OpenActivity *opn = [m_arrSweep objectAtIndex:row];
return [opn m_ahhaName];
}
default:
return @"";
break;
}
}
任何人都可以帮我解决这个问题.. 感谢
答案 0 :(得分:0)
听起来你的标签设置不正确,或者你没有连接两个选择器的数据源和委托方法。
在numberOfRowsInComponent和titleForRow:方法中添加一些NSLog语句。
在日志中包含选择器视图对象和选择器视图的标记,例如
NSLog(@"Rows in component for %@, tag %d",thePickerView,[thePickerView tag]);
titleForRow中有不同的文字。
您应该看到两个不同的对象 - 如果没有,您的委托和数据源都没有连接。你应该看到标签1和2 - 如果没有,你的标签设置不正确。
答案 1 :(得分:-1)
有了这个问题我的代码没有任何问题只是我忘了在XIB中将tag的值设置为1和2。