Я пытаюсь разработать простой механизм поиска на UIPicker. Подход, который я использую, состоит в том, чтобы сохранить два массива. Моя проблема в том, что по какой-то причине я получаю эту ошибку во время выполнения.
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIView numberOfComponentsInPickerView:]
Вот объявления массива.
//data source for UIPicker NSArray
*arrayCountryChoices;
//search results buffer
NSMutableArray *arraySearchResults;
//properties
@property(nonatomic,retain) NSArray*arrayCountryChoices;
@property(nonatomic,retain) NSMutableArray *arraySearchResults;
Здесь я инициализирую данные
//create data
arrayCountryChoices = [NSArray arrayWithObjects:@"foo",@"bar",@"baz",nil];
//copy the original array to searchable array
arraySearchResults = [arrayCountryChoices mutableCopy];
Методы выбора.
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
return [arraySearchResults count];
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [arraySearchResults objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
//grab the selected country
strUserChoice = [arraySearchResults objectAtIndex:row];
}
Вот код поиска для полноты, хотя он пока не актуален, так как приложение умирает еще до того, как мы сюда попали
//filter on search term
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@", strSearchText];
[arraySearchResults filterUsingPredicate: predicate];
[pickerCountry reloadComponent:0];
Я также перетащил источник данных и делегировал соединения из UIPicker владельцу файлов в Интерфейсном Разработчике.
Есть идеи?
Заранее спасибо.