UIPickerView selectRow不更改显示

时间:2016-04-12 22:11:45

标签: ios uipickerview

之前我做过很多选择器视图,有些包含2个组件。但在阅读完所有文章之后,我才能选择一行。

我在视图控制器中的滚动视图上有2个选择器视图。每个都有不同的标签和不同的价值观。拾取器正确加载,所以我现在委托和数据源正在工作。

我在同一个视图上有多个开关,它们正在正确更新。

@property (strong, nonatomic) IBOutlet UIPickerView *autolockPicker;
@property (strong, nonatomic) IBOutlet UIPickerView *autoRelockPicker;

 autolockTimes = @[@"Disabled",@"5 Seconds",@"10 Seconds",@"15 Seconds",@"30 Seconds"];
autolockPicker = [[UIPickerView alloc]init];
autolockPicker.delegate = self;
autolockPicker.tag = 0;

autoRelockTimes = @[@"Disabled",@"15 Seconds",@"30 Seconds",@"60 Seconds",@"90 Seconds"];
autoRelockPicker = [[UIPickerView alloc]init];
autoRelockPicker.delegate = self;
autoRelockPicker.tag = 1;

 if ([lsd.ARE isEqualToString:@"Disabled"]) {
    [autoRelockPicker selectRow:0 inComponent:0 animated:NO];
} else if ([lsd.ART isEqualToString:@"15"]) {
    [autoRelockPicker selectRow:1 inComponent:0 animated:NO];
} else if ([lsd.ART isEqualToString:@"30"]) {
    NSLog(@"ART is 30");
    [autoRelockPicker selectRow:2 inComponent:0 animated:YES];
} else if ([lsd.ART isEqualToString:@"60"]) {
    NSLog(@"ART is 60");
    [autoRelockPicker selectRow:3 inComponent:0 animated:NO];
} else if ([lsd.ART isEqualToString:@"90"]) {
    [autoRelockPicker selectRow:4 inComponent:0 animated:NO];
}

我得到的NSLog for ART是30,所以我知道我在那里。

我试过了: - 在之前和之后重新加载组件 - 触发didSelectRow - 从ViewWillAppear加载 - 创建一个按钮来更新所需的行

没有任何效果。

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢@maddy,我意识到我正在以编程方式分配选择器。我删除了行以分配和初始化选择器,它工作了!