Я пытаюсь иметь 2 вида сборщика в одном представлении. Это работает за исключением двух вещей. Если в одном окне выбора больше строк, чем в другом, происходит сбой приложения при выборе элемента из окна выбора с большим количеством элементов. Кроме того, я создал NSLog для сборщиков, и консоль показывает, что я выбираю два элемента одновременно, хотя на самом деле я имею дело только с одним сборщиком. Я знаю, это звучит немного запутанно, но я включаю весь код. Заранее спасибо.
list и list2 являются NSMutableArrays
список состоит из 4 пунктов
list2 имеет 5 пунктов
Есть ошибка:
* Завершение работы приложения из-за необработанного исключения 'NSRangeException', причина: '* - [NSCFArray objectAtIndex:]: index (4) за пределами (4)'
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView{
if([thePickerView isEqual:pickerView1 ]){
return 1;
}
else if([thePickerView isEqual:pickerView2]){
return 1;
}
else{
return 0;
}
}
-(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component{
if([thePickerView isEqual:pickerView1 ]){
return [list count];
}
else if([thePickerView isEqual:pickerView2]){
return [list2 count];
}
else{
return 0;
}
}
-(NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if([thePickerView isEqual:pickerView1 ]){
return [list objectAtIndex:row];
}
else if([thePickerView isEqual:pickerView2]){
return [list2 objectAtIndex:row];
}
else{
return 0;
}
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"Selected item %@. Index of selected item:%i", [list objectAtIndex:row], row);
NSLog(@"Selected item %@. Index of selected item:%i", [list2 objectAtIndex:row], row);
NSLog(@"Selected item %@. Index of selected item:%i", [list3 objectAtIndex:row], row);
if([thePickerView isEqual:pickerView1 ]){
//Do Something
}
else if([thePickerView isEqual:pickerView2 ]){
//Do Something
}
else if([thePickerView isEqual:pickerView3 ]){
//Do Something
}
}