在我的应用中,我在动作表中使用了4个选择器视图,其中我如何从特定选择器中获取特定值? 在其中我使用了一种方法来获得它。但是我需要一种更好的方法来获得它。,PLZ帮助我。,
-(NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
NSLog(@"pickerView");
return [pickerArray count];
}
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [pickerArray objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if (validateButton == 0){
NSInteger temp = (row*5);
minAsleepInt = temp;
minAsleepLable.text = [NSString stringWithFormat:@"%d",temp];
}
else if(validateButton == 1){
noOptInt = row+1;
noOptLable.text = [pickerArray objectAtIndex:row];
}
else if(validateButton == 2){
ageTypeLable.text = [pickerArray objectAtIndex:row];
}
else if(validateButton == 3){
if([pickerArray objectAtIndex:row] == @"Yes"){
sleepLessBool = YES;
}else{
sleepLessBool = NO;
}
sleepLessLable.text = [pickerArray objectAtIndex:row];
}
}
- (IBAction)sleepLessAction:(id)sender {
validateButton = 3;
pickerArray = [[NSMutableArray alloc] init];
[pickerArray addObject:@"Yes"];
[pickerArray addObject:@"No"];
actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.delegate = self;
[actionSheet addSubview:pickerView];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}
- (IBAction)ageTypeAction:(id)sender {
validateButton = 2;
pickerArray = [[NSMutableArray alloc] init];
[pickerArray addObject:@"Child"];
[pickerArray addObject:@"Teen"];
[pickerArray addObject:@"Adult"];
actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.delegate = self;
[actionSheet addSubview:pickerView];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}
- (IBAction)noOptAction:(id)sender {
validateButton = 1;
pickerArray = [[NSMutableArray alloc] init];
[pickerArray addObject:@"1"];
[pickerArray addObject:@"2"];
[pickerArray addObject:@"3"];
[pickerArray addObject:@"4"];
[pickerArray addObject:@"5"];
[pickerArray addObject:@"6"];
[pickerArray addObject:@"7"];
[pickerArray addObject:@"8"];
[pickerArray addObject:@"9"];
actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.delegate = self;
[actionSheet addSubview:pickerView];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}
- (IBAction)minSleepAction:(id)sender {
validateButton = 0;
pickerArray = [[NSMutableArray alloc] init];
[pickerArray addObject:@"0 Minutes"];
[pickerArray addObject:@"5 Minutes"];
[pickerArray addObject:@"10 Minutes"];
[pickerArray addObject:@"15 Minutes"];
[pickerArray addObject:@"20 Minutes"];
[pickerArray addObject:@"25 Minutes"];
[pickerArray addObject:@"30 Minutes"];
[pickerArray addObject:@"35 Minutes"];
[pickerArray addObject:@"40 Minutes"];
[pickerArray addObject:@"45 Minutes"];
[pickerArray addObject:@"50 Minutes"];
[pickerArray addObject:@"55 Minutes"];
[pickerArray addObject:@"60 Minutes"];
actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame];
pickerView.showsSelectionIndicator = YES;
pickerView.delegate = self;
[actionSheet addSubview:pickerView];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(dismissActionSheet) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}
-(void)dismissActionSheet{
[actionSheet dismissWithClickedButtonIndex:0 animated:YES];
}
@end
答案 0 :(得分:0)
您可以为每个选择器设置标记。并使用TAG值从特定选择器获取特定值。
答案 1 :(得分:0)
正如您所做的那样,您需要设置以下委托方法:
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return PICKER_COMPONENTS;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return [self.pickerOptions count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
return [self.pickerOptions objectAtIndex:row];
}
现在,就响应每个选择器的选择而言,我建议使用EAActionSheetPicker。它具有以下可选的委托方法,使生活更轻松
-(void)EAActionSheetPicker:(EAActionSheetPicker *)actionSheet
didDismissWithSelection:(id)selection
inTextField:(UITextField *)textField{
// respond to your selection here
}
你只需要通过连接每个pickerView并使用相关的响应textField来设置它。查看仓库中的示例项目,看看我在说什么。