Ios 在选择段后,我们如何回忆PickView的didSelectRow?

Ios 在选择段后,我们如何回忆PickView的didSelectRow?,ios,objective-c,xcode,cocoa-touch,uipickerview,Ios,Objective C,Xcode,Cocoa Touch,Uipickerview,我使用了一个分段控件,让用户在pickerview中选择一行后,在两种类型的结果之间进行选择。但是,当我在pickerview中选择一行时,它会显示所选段的结果,但我选择另一段时,它不会执行任何操作,直到我再次选择该行 这是我的密码: - (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { i=row; switch (i) {

我使用了一个分段控件,让用户在pickerview中选择一行后,在两种类型的结果之间进行选择。但是,当我在pickerview中选择一行时,它会显示所选段的结果,但我选择另一段时,它不会执行任何操作,直到我再次选择该行

这是我的密码:

- (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");
        }

每种情况都是这样,我遗漏了什么?

我认为您需要调用一个方法,该方法包含来自picker委托方法和分段控件的action方法的所有[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");
            }


    }
}

使用这种类型的排列,当选择器视图值更改或分段控件的值更改时,将调用设置值的方法。

当然,这就是可能发生的情况。pickerView:didSelectRow:Incomonent:仅在更改选择器中的行选择时调用。在分段控件中选择另一个分段时,不会再次调用它。还有,你在用案例1系列做什么?如果不在switch语句中,您就不能使用它。@rdelmar我在一个switch语句中,我只显示部分代码,但我刚刚编辑了我的Q来显示它。那么,你有什么建议?我怎么回忆起迪德罗?谢谢!那么,我应该这样申报吗@属性读写,非原子NSInteger选择器SelectedRow@user1949873,应该可以,我通常只对整数做非原子运算。另外,除非您需要从其他类访问它,否则它应该放在.m文件顶部的类扩展名中,而不是放在.h中。请你把它添加到你的答案中好吗?@user1949873,我已经编辑了我的答案来展示整个.m文件。非常感谢你,你真是个救命恩人