UISegmentedControl Изменено Событие пропускает при добавлении метода внутри - PullRequest
1 голос
/ 27 января 2010

Вот мой код для события UIControlEventValueChanged для UISegmentedControl:

- (void)segmentAction:(id)sender{

    if([sender selectedSegmentIndex] == 0){     
        pendingIsShowing = YES;
        [freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
    }else if([sender selectedSegmentIndex] == 1){
        pendingIsShowing = NO;
        [self showAvailableCuts:sender];
        [freeCutsTable reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade];
    }
}

Моя проблема в том, что при изменении значения вызывается [self showAvailableCuts:sender], но элемент управления сегмента больше не меняет свой индекс. Если я закомментирую вызов метода, он будет работать нормально ... Я попытался передать сегментированный элемент управления в [self showAvailableCuts:sender] и изменить его таким образом, но безрезультатно ...

- (void)showAvailableCuts:(id)sender{
    if(!pendingIsShowing){
        NSString *path =@"https://WebserviceURL";       
        NSString* escapedUrl = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        //[sender setSelectedIndex:1];
        NSLog(@"%@", escapedUrl);
        [self parseXMLFileAtURL:escapedUrl];
    }
}

Я не уверен, почему это происходит ...

1 Ответ

1 голос
/ 27 января 2010

Не глядя на код для [self showAvailableCuts:sender];, все, о чем я могу думать, - это зачем вам передавать сам объект 'sender'? Просто измените метод showAvailableCuts так, чтобы вам нужно было передавать только необходимые значения, такие как [sender titleForSegmentAtIndex:], [sender selectedSegmentIndex] и т. Д.

хорошо, во-первых, сеттер должен быть [sender setSelectedSegmentIndex:index] не тем, что вы закомментировали. Я сам успешно использовал это -

sender.selectedSegmentIndex = index; //in your case index is 1
...