У меня есть UIPickerView в поповере. Я просто пытаюсь установить значение по умолчанию / начальное значение в окне выбора, прежде чем появится всплывающее окно. Вот код, который я использую для создания и отображения всплывающего окна (в методе, обрабатывающем действие кнопки касания):
- (IBAction) handleClickStepTimeButton: (id)sender
{
UIViewController *timePickerController = [UIViewController alloc];
UIPickerView *timePicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 0, 100, 180)];
timePicker.delegate = self;
timePicker.showsSelectionIndicator = YES;
[timePickerController.view addSubview:timePicker];
UIPopoverController *timePickerPopoverController = [[UIPopoverController alloc] initWithContentViewController:timePickerController];
timePickerPopoverController.popoverContentSize = CGSizeMake(100, 200);
UIButton *stepTimeButton = (UIButton *)sender;
[timePickerPopoverController presentPopoverFromRect:CGRectMake(stepTimeButton.frame.size.width, (stepTimeButton.frame.size.height / 2), 1, 1) inView:stepTimeButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[timePicker selectRow:(currentStep.length - 1) inComponent:1 animated:YES];
}
У меня нет проблем с созданием popover и UIPickerView при каждом нажатии этой кнопки, потому что это происходит не очень часто и потому что значения UIPickerView - это просто небольшое число целых чисел. Вот код, который я использую для добавления значений в представление:
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return 8;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)rowId forComponent:(NSInteger)component {
return [NSString stringWithFormat:@"%d", (rowId + 1)];
}
Моя проблема в том, что каждый раз, когда я показываю поповер, я получаю исключение NSRangeException в строке [timePicker selectRow...
. Этот вид имеет смысл для меня, потому что UIPickerView еще не отображается. Но используя эту логику ... как можно установить значение по умолчанию / начальное значение для UIPickerView?
Я уверен, что здесь есть простое решение, но я просто не вижу его ...
Спасибо