2011-12-27 16 views
0

在我的應用程序中使用4個pickerviews的行動表中,我怎樣才能從特定的選擇器獲得特定的值? 在我所使用的方法得到它,但我需要一個更好的方式來得到它,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

提示:只粘貼您遇到問題的最重要的代碼行。沒有人會在你的整個班級去了解它,如果它很長。 – Cyprian

+0

謝謝Cyprian。,我現在編輯 – Bala

回答

0

你可以爲每個挑選一個標籤。並使用TAG值從特定選取器中獲取特定值。

+0

即時新手,你可以給我一些鏈接,我不知道如何設置標籤。, – Bala

+0

簡單但很好,謝謝朋友。, – Bala

+0

歡迎:)快樂編碼:) – Manjunath

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以相應的響應文本框鉤住設置它的權利。看看回購示例項目,看看我在說什麼。

相關問題