Установить значение на ошибку строки UIPickerView iOS

Когда я нажимаю кнопку, pickerview подходит, и я выбираю город оттуда. И если я снова нажму, я хочу получить то, что я выбрал раньше.

Вот мой код,

-(void)cityButtonPressed{

actionSheet = [[UIActionSheet alloc] initWithTitle:nil
 delegate:nil
 cancelButtonTitle:nil
 destructiveButtonTitle:nil
 otherButtonTitles:nil];

[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

CGRect pickerFrame = CGRectMake(0, 30, 0, 0);
pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
NSLog(@"selectedPickerView = %i",selectedPickerView);
[pickerView selectRow:selectedPickerView inComponent:0 animated:NO];// this line is not working
pickerView.dataSource = self;
pickerView.delegate = self;

[actionSheet addSubview:pickerView];

NSString *done = @"Done";

closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:done]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 10, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor greenColor];
[closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];

[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];

[actionSheet setBounds:CGRectMake(0, 0, 320, 500)];
[pickerView reloadAllComponents];

}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow: (NSInteger)row inComponent:(NSInteger)component {
// Handle the selection
[cityButton setTitle:[cities objectAtIndex:row] forState:UIControlStateNormal];
if (row == 0) {

 [cityButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];

}else{

 [cityButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

}

selectedPickerView = row;

}

Что я делаю неправильно здесь.

И еще один вопрос. Когда я нажимаю кнопку, эта ошибка наступает.

<error>: CGContextRestoreGState: invalid context 0x0. This is a serious error. This application, or a library it uses, is using an invalid context and is thereby contributing to an overall degradation of system stability and reliability. This notice is a courtesy: please fix this problem. It will become a fatal error in an upcoming update.
</error>

Мне интересно, это не работает из-за этой ошибки?

1 ответ

Вы создаете лист действий без заголовка или кнопок? Тьфу. Затем вы добавляете сегментированный элемент управления в качестве кнопки tappable? ****** ugh Apple, скорее всего, отклонит приложение, которое использует сегментированный элемент управления в качестве кнопки.

Что касается вашей конкретной проблемы, я не уверен, что вы можете изменить выбранный компонент в представлении выбора, прежде чем он появится на экране. Что произойдет, если вы переместите selectRow: inComponent: анимированный: вызов вниз после отображения листа действий? Вероятно, вы также должны избавиться от вызова перезагрузки на вашем представлении выбора, так как он будет загружать его при отображении.

licensed under cc by-sa 3.0 with attribution.