2013-04-07 3 views
1

У меня есть 2 текстовых поля. Каждый из них имеет собственное представление выбора. Когда пользователь нажимает на каждый из них, появляется UIPickerView. Все работает. Однако, когда, во-первых, я нажимаю на второе текстовое поле, появляется сборщик для второго текстового поля, а первое текстовое поле принимает результат из этого представления выбора, а не второго. Что-то не так в моем коде. Я не могу понять, что именно. Пожалуйста, помогите ... Заранее спасибо)Два сборщика для 2 текстовых полей в одном представлении

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 

    if (textField == reminder){ 
     choosen = reminderString; 
     mySheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
     [mySheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent]; 
     myArray = [[NSMutableArray alloc]initWithObjects: @"15 minutes",@"20 minutes",@"30 minutes", @"45 minutes",nil]; 

     CGRect pickerFrame = CGRectMake(0,44,0,0); 
     UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame]; 
     pickerView.delegate =self; 
     pickerView.dataSource=self; 
     pickerView.showsSelectionIndicator = YES; 
     [mySheet addSubview:pickerView]; 

     UIToolbar *controlToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, mySheet.bounds.size.width, 44)]; 

     [controlToolBar setBarStyle:UIBarStyleBlack]; 
     [controlToolBar sizeToFit]; 

     UIBarButtonItem *spaser = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
     UIBarButtonItem *setButton = [[UIBarButtonItem alloc] initWithTitle:@"set" style:UIBarButtonItemStyleDone target:self action:@selector(DatePickerDoneClick)]; 
     UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelRepetition)]; 

     [controlToolBar setItems:[NSArray arrayWithObjects:spaser, setButton, cancelButton,nil] animated:NO]; 

     [mySheet addSubview:controlToolBar]; 
     [mySheet showInView:self.view]; 
     [mySheet setBounds:CGRectMake(0, 0, 320, 485)]; 

     return NO; 
    } 
    else if(textField == repetition){ 
     choosen = repetitionString; 
     repetitionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; 
     [mySheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent]; 

     myArray = [[NSMutableArray alloc] initWithObjects:@"One-time task",@"Daily",@"Weekly",@"Yearly",nil]; 

     CGRect pickerFrame = CGRectMake(0,44,0,0); 
     UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame]; 
     pickerView.delegate =self; 
     pickerView.dataSource=self; 
     pickerView.showsSelectionIndicator = YES; 
     [mySheet addSubview:pickerView]; 


     UIToolbar *controlToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, mySheet.bounds.size.width, 44)]; 

     [controlToolBar setBarStyle:UIBarStyleBlack]; 
     [controlToolBar sizeToFit]; 

     UIBarButtonItem *spaser = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
     UIBarButtonItem *setButton = [[UIBarButtonItem alloc] initWithTitle:@"set" style:UIBarButtonItemStyleDone target:self action:@selector(DatePickerDoneClick)]; 
     UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelRepetition)]; 

     [controlToolBar setItems:[NSArray arrayWithObjects:spaser, setButton, cancelButton,nil] animated:NO]; 

     [mySheet addSubview:controlToolBar]; 
     [mySheet showInView:self.view]; 
     [mySheet setBounds:CGRectMake(0, 0, 320, 485)]; 

     return NO; 
    } 
    else{ 
     return 0; 
    } 
} 

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { 
    return 1; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { 
    return myArray.count; 
} 

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
    return [myArray objectAtIndex:row]; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
    if (chosen == reminderString) { 
     reminderString =[myArray objectAtIndex:row]; 
     [reminder setText:reminderString]; 
    } 
    else if (chosen == repetitionString){ 
     reminderString =[myArray objectAtIndex:row]; 
     [repetition setText:reminderString]; 
    } 
} 

- (void)DatePickerDoneClick{ 
    [mySheet dismissWithClickedButtonIndex:0 animated:YES]; 
} 

-(void)cancelRepetition{ 
    [mySheet dismissWithClickedButtonIndex:0 animated:YES]; 
} 
+0

вы можете дать имя для сборщиков, а затем различать их – Purva

ответ

1

вы можете дать имя сборщикам, а затем различать между ними экс Picker1 и picker2 и didselectrow поставил условие

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 

    if(pickerview == picker1) 
{ 
reminderString =[myArray objectAtIndex:row]; 
     [reminder setText:reminderString]; 
} 

elseif(pickerview == picker2) 
{ 

    reminderString =[myArray objectAtIndex:row]; 
     [repetition setText:reminderString]; 
}