2010-03-08 20 views
0

j'ai vue avec beaucoup de choisir comme checkInDate, checkOutDate (uidatepicker) et âge, chambre (UIPickerView) ...multiples UIPickerView et uidatapicker

Je veux utiliser showActionSheet pour afficher les différents pickerview quand cliquez diffrent tableViewCell

mais je suis arrivé à deux problèmes:

  1. le checkInDate et theCheckOutDate ne peut pas être montrer la deuxième fois si j'utilise checkOutDate.date = nowDate;
  2. Comment puis-je utiliser multi pickerview dans cette vue? il ne devrait pas être plusieurs composants.

ici est le code principal:

- (void)viewDidLoad { 
    age = [[UIPickerView alloc] init]; 
    age.showsSelectionIndicator = YES; 
    age.delegate = self; 
    NSArray *ageData = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil]; 
    self.pickerData = data; 

    //room = [[UIPickerView alloc] init]; 
    //room.showsSelectionIndicator = YES; 
    //room.delegate = self; 
    //NSArray *roomData = [[NSArray alloc] initWithObjects:@"6", @"7", nil]; 
    //self.pickerData = roomDate; 

//check data 
    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *components = [[NSDateComponents alloc] init]; 
    components.day = 1; 
    NSDate *now = [NSDate date]; 
    NSDate *nextDay = [gregorian dateByAddingComponents:components toDate:now options:0]; 
    NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
    formatter.dateFormat = @"yyyy-MM-dd"; 
    checkInDateStr = [formatter stringFromDate:nextDay]; 
    NSDate *dayAfterTom = [gregorian dateByAddingComponents:components toDate:nextDay options:0]; 
    checkOutDateStr = [formatter stringFromDate:dayAfterTom]; 

    checkInDate = [[UIDatePicker alloc] init]; 
    checkInDate.tag = checkInDateTag; 
    [checkInDate setMinimumDate:now]; 
    checkInDate.datePickerMode = UIDatePickerModeDate; 
    //checkInDate.date = nextDay; 
    checkOutDate = [[UIDatePicker alloc] init]; 
    checkOutDate.tag = checkOutDateTag; 
    [checkOutDate setMinimumDate:nextDay]; 
    checkOutDate.datePickerMode = UIDatePickerModeDate; 
    //checkOutDate.date = dayAfterTom; 
} 

- (void)showActionSheet:(NSIndexPath *)indexPath withDataPickerTag:(NSInteger *)tag{ 
    NSString *title = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation) ? @"\n\n\n\n\n\n\n\n\n" : @"\n\n\n\n\n\n\n\n\n\n\n\n" ; 

    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:title delegate:self cancelButtonTitle:@"cancel" destructiveButtonTitle:nil otherButtonTitles:@"done", nil]; 
    [actionSheet showInView:self.view]; 
    //UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease]; 
    // datePicker.tag = 101; 
    // datePicker.datePickerMode = UIDatePickerModeDate; 
    // NSDate *now = [NSDate date]; 
    // [datePicker setDate:now animated:YES]; 
    if (tag == 201){ 
     [actionSheet addSubview:checkInDate]; 
    }else if (tag == 202){ 
     [actionSheet addSubview:checkOutDate]; 
    } 
} 

#pragma mark - 
#pragma mark Picker Data Source Methods 
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView 
{ 
    return 1; 
} 
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component 
{ 
    return [pickerData count]; 
} 
#pragma mark Picker Delegate Methods 
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    return [pickerData objectAtIndex:row]; 
} 

Répondre

1

Vous pouvez définir le cadre d'une vue sélecteur.

Au lieu de

age = [[UIPickerView alloc] init]; 

Utilisez

UIPickerView *picker = [[UIPickerView alloc] initWithFrame:<Your frame>]; 

ou

[picker setFrame:<your frame>]; 

En utilisant cela, vous pouvez utiliser des vues de sélecteur multiples. Gardez un identifiant pour les deux afin que vous puissiez gérer les délégués.