Используете много видов выбора в различных листах действий? - PullRequest
0 голосов
/ 27 декабря 2011

В моем приложении я использую 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

Ответы [ 2 ]

0 голосов
/ 25 июня 2013

Как вы уже сделали, вам нужно настроить следующие методы делегата:

- (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. Посмотрите пример проекта в репо, чтобы понять, о чем я говорю.

0 голосов
/ 27 декабря 2011

вы можете установить тег для каждого сборщика.И получить конкретное значение из конкретного сборщика, используя значение TAG.

...