Проблемы с UISegmentedControl: удаление и вставка изменения значения триггера - PullRequest
0 голосов
/ 08 июня 2011

Я, вероятно, просто делаю это неправильно, но после того, как я попробовал несколько трюков, я не мог понять, как добиться желаемого поведения для 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, где говорится, что удаление или вставка отправляют событие, изменяющее значение, мне потребовалось некоторое время, чтобы понять, почему это не работает.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...