1

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];
    }
}

なぜこれが起こっているのかわかりません...

4

1 に答える 1

1

私が考えることができるすべてのコードを見ずに[self showAvailableCuts:sender];-なぜあなたは'sender'オブジェクト自体を渡す必要があるのですか?showAvailableCutsメソッドを変更するだけで[sender titleForSegmentAtIndex:][sender selectedSegmentIndex]などの必要な値のみを渡す必要があります。

[sender setSelectedSegmentIndex:index]わかりました、最初にセッターはあなたがコメントアウトしたものではないはずです。私はこれをうまく使用しました-

sender.selectedSegmentIndex = index; //in your case index is 1
于 2010-01-27T15:06:34.503 に答える