我使用分段控件让用户在选择器视图中选择一行后选择两种类型的结果。但是,当我在选择器视图中选择一行时,它会显示所选段的结果,但是我选择了另一个段,在我再次重新选择该行之前它没有做任何事情。
这是我的代码:
- (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");
}
就像每个案例一样,我错过了什么?
答案 0 :(得分:2)
我认为您需要调用一个方法,该方法包含来自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");
}
}
}
使用这种类型的排列,当选择器视图值更改或分段控件的值更改时,将调用设置值的方法。