Я, вероятно, просто делаю это неправильно, но после того, как я попробовал несколько трюков, я не мог понять, как добиться желаемого поведения для UISegmentedControl.Я хочу иметь UISegmentedControl с 2 сегментами: Новый и Изменить.Этот контроль должен быть «мгновенным», то есть не сохранять состояние.Когда редактирование «коснулось», я хочу, чтобы элемент управления удалил новый сегмент и изменил сегмент редактирования на «Готово».Когда коснитесь Готово, я хочу вернуться к старой конфигурации сегмента.Ниже приведен код, который, как я ожидал, будет работать нормально:
- (IBAction) valueChanged {
NSUInteger numberOfSegments = segCtrl.numberOfSegments;
NSUInteger selectedSegment = segCtrl.selectedSegmentIndex;
NSLog(@"Number of segments: %d", numberOfSegments);
NSLog(@"Selected segement: %d", selectedSegment);
if ( numberOfSegments == 2 && selectedSegment == 1 ) {
[segCtrl setTitle:@"Done" forSegmentAtIndex:selectedSegment];
[segCtrl removeSegmentAtIndex:0 animated:YES];
}
else if ( numberOfSegments == 2 && selectedSegment == 0 ){
NSLog(@"Action: New");
}
else if ( numberOfSegments == 1 && selectedSegment == 0 ) {
[segCtrl setTitle:@"Done" forSegmentAtIndex:selectedSegment];
[segCtrl insertSegmentWithTitle:@"New" atIndex:selectedSegment animated:YES];
}
}
Вот вывод, полученный этим кодом, «касающийся» редактирования, а затем завершения:
2011-06-08 20:28:02.397 proofsOfConcept[30173:207] Number of segments: 2
2011-06-08 20:28:02.398 proofsOfConcept[30173:207] Selected segement: 1
2011-06-08 20:28:02.399 proofsOfConcept[30173:207] Number of segments: 2
2011-06-08 20:28:02.400 proofsOfConcept[30173:207] Selected segement: 0
2011-06-08 20:28:02.400 proofsOfConcept[30173:207] Action: New
2011-06-08 20:28:03.557 proofsOfConcept[30173:207] Number of segments: 1
2011-06-08 20:28:03.558 proofsOfConcept[30173:207] Selected segement: 0
2011-06-08 20:28:03.558 proofsOfConcept[30173:207] Number of segments: 2
2011-06-08 20:28:03.559 proofsOfConcept[30173:207] Selected segement: 1
2011-06-08 20:28:03.559 proofsOfConcept[30173:207] Number of segments: 2
2011-06-08 20:28:03.560 proofsOfConcept[30173:207] Selected segement: 0
2011-06-08 20:28:03.560 proofsOfConcept[30173:207] Action: New
Как вы можете видеть, это выглядитнапример, удаление сегмента 0, вызванного valueedChanged для этого сегмента, и позже, когда Done «затронут», оба сегмента вызывают valueChanged.
Я прекратил использовать кнопки для достижения того же поведения, но я просто хочу знать, можно ли сделать это с помощьюсегментированный элемент управления (выглядит немного лучше).
Я не смог найти в документах Apple, где говорится, что удаление или вставка отправляют событие, изменяющее значение, мне потребовалось некоторое время, чтобы понять, почему это не работает.
Спасибо