1

ピッカービューで行を選択した後、ユーザーが 2 つのタイプの結果から選択できるように、セグメント化されたコントロールを使用しました。ただし、ピッカービューで行を選択すると、選択したセグメントの結果が表示されますが、別のセグメントを選択すると、行を再度選択するまで何も実行されません。

これが私のコードです:

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

i=row;
switch (i) {
    case 0:


case 1
if(_segment.selectedSegmentIndex == 1){

        [self Fquarter];
        [self Tquarter];
        [self Ten];
        [self Twenty];
        [self Fourty];
        [self Fifty];


        NSLog(@"AUDIO 10 MINS");
        }

        if(_segment.selectedSegmentIndex == 0){

            [self SFquarter];
            [self STquarter];
            [self STen];
            [self STwenty];
            [self SFourty];
            [self SFifty];

             NSLog(@"Visual 10 MINS");
        }

どの場合もそうですが、何を見逃したのでしょうか。

4

1 に答える 1

2

ピッカー デリゲート メソッドとセグメント化されたコントロールのアクション メソッドの両方から [self Fquarter] などのすべてのステートメントを含むメソッドを呼び出す必要があると思います。このようなもの (pickerSelectedRow は NSInteger として型指定されたプロパティです):

@interface ViewController ()
@property (weak,nonatomic) IBOutlet UISegmentedControl *segment;
@property (nonatomic) NSInteger pickerSelectedRow;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    self.pickerSelectedRow = row;
    [self doStuff];

}

-(IBAction)segmentChosen:(UISegmentedControl *)sender {
    [self doStuff];
}


-(void)doStuff {
    switch (self.pickerSelectedRow) {
        case 0:

        case 1:
            if(_segment.selectedSegmentIndex == 1){

                [self Fquarter];
                [self Tquarter];
                [self Ten];
                [self Twenty];
                [self Fourty];
                [self Fifty];


                NSLog(@"AUDIO 10 MINS");
            }

            if(_segment.selectedSegmentIndex == 0){

                [self SFquarter];
                [self STquarter];
                [self STen];
                [self STwenty];
                [self SFourty];
                [self SFifty];

                NSLog(@"Visual 10 MINS");
            }


    }
}

このタイプの配置では、値を設定するメソッドは、ピッカー ビューの値が変更されたとき、またはセグメント化されたコントロールの値が変更されたときに呼び出されます。

于 2013-04-08T23:52:22.530 に答える