У меня есть четыре NS-словаря, которые я бы хотел использовать для заполнения pickerview в зависимости от элемента управления. С кодом, который у меня есть, первый сегментированный элемент управления/pickerview работает нормально, но когда я переключаюсь на второй сегмент, представление сборщика загружает только часть второго словаря, то есть загружает то же количество строк, что и в первом словаре , Когда я меняю сегментированный элемент управления на третий или четвертый сегмент, он просто сбой при ошибке sigabrt, указывающий, что он не может индексировать item43, когда существует только 27. Это, как я подозреваю, связано с популяцией UItextfield, основанной на строке и объекте upickerview. Я думаю, проблема связана с тем, как у меня есть источник данных и набор делегатов.Сбой UIPickerView при переключении управления с разделением
#pragma mark -
#pragma mark UIPickerViewDelegate
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if ([wine selectedSegmentIndex] == 0)
{
return [robskeys objectAtIndex:row];
}
if ([wine selectedSegmentIndex] == 1)
{
return [esabskeys objectAtIndex:row];
}
if ([wine selectedSegmentIndex] == 2)
{
return [lebskeys objectAtIndex:row];
}
else if ([wine selectedSegmentIndex] == 3)
{
return [sbskeys objectAtIndex:row];
}
return @"Unknown title";
}
#pragma mark -
#pragma mark UIPickerViewDataSource
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if ([wine selectedSegmentIndex] == 0)
{
return robskeys.count;
}
if ([wine selectedSegmentIndex] == 1)
{
return esabskeys.count;
}
if ([wine selectedSegmentIndex] == 2)
{
return lebskeys.count;
}
else if ([wine selectedSegmentIndex] == 3)
{
return sbskeys.count;
}
return 1;
}
#pragma mark -
Любая помощь будет высоко ценится Спасибо
UPDATE
Используя следующие, когда segmentedcontrol изменяется работы. Кто-нибудь видит какие-либо проблемы в alloc, init, выдает один и тот же выборщик в viewDidLoad и в этом IBAction. Как вы, возможно, догадались, что UItextfield winespec называет coPicker не клавиатурой.
-(IBAction)ValueChanged:(id)sender {
[winespec resignFirstResponder];
UIPickerView *coPicker = [[UIPickerView alloc] initWithFrame:CGRectZero];
coPicker.tag = kCountryPickerTag;
coPicker.delegate = self;
coPicker.dataSource = self;
[coPicker setShowsSelectionIndicator:YES];
winespec.inputView = countryPicker;
[winespec becomeFirstResponder];
[coPicker release];
}
Какой код вы выполняете при выборе сегмента? – EmptyStack
Я предполагаю, что значение ** selectedSegmentIndex ** где-то сбрасывается. – EmptyStack
selectedSegementIndex не сбрасывается нигде. – Mattog1456