Как получить два разных выбора даты с использованием одного UIActionSheet? - PullRequest
1 голос
/ 14 февраля 2012

У меня есть несколько UITextField, я дал теги для каждого textField, и я вызвал datepicker, в то время как текстовое поле didBinging Editing.i получало другой тип средства выбора и средство выбора даты для удаления предрасположенности, я использовал UIActinSheet .. здесь моя проблема, я получаюDatePicker только один раз, пока я выбираю следующее TextField, он будет зависать ...

PLZ, помогите мне, я дал код, что я сделал .?

-(void)textFieldDidBeginEditing:(UITextField *)textField
{

    if (textField.tag==11) {
        NSLog(@"text fiels work out>>%d",textField.tag);

        //UIActionSheet
        pickerActionSheet  =[[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Done" destructiveButtonTitle:nil otherButtonTitles:nil];
        pickerActionSheet.actionSheetStyle=UIActionSheetStyleDefault;
        //date picker    
        insertDatePicker=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 70, 325, 300)];
        insertDatePicker.datePickerMode=UIDatePickerModeDate;
        insertDatePicker.date=[NSDate date];
        [insertDatePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
        //[self.view addSubview:insertDatePicker];
        [pickerActionSheet addSubview:insertDatePicker];
        [insertDatePicker release];
        [pickerActionSheet showFromTabBar:self.tabBarController.tabBar];
        [pickerActionSheet setBounds:CGRectMake(0, 0, 320, 464)];
        [pickerActionSheet release];
        insertDatePicker.hidden=NO;
        timeDatePicer.hidden=YES;


    }else 
    {
        NSLog(@"text fiels work out>>%d",textField.tag);

      //UIActionSheet
        pickerActionSheet  =[[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Done" destructiveButtonTitle:nil otherButtonTitles:nil];
        pickerActionSheet.actionSheetStyle=UIActionSheetStyleDefault;

        //time picker
        timeDatePicer=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 230, 325, 300)];
        timeDatePicer.datePickerMode=UIDatePickerModeTime;
        timeDatePicer.date=[NSDate date];
        [timeDatePicer addTarget:self action:@selector(timeChanged:)     forControlEvents:UIControlEventValueChanged];
        // [self.view addSubview:timeDatePicer];
         [pickerActionSheet addSubview:timeDatePicer];
        [timeDatePicer release];
        [pickerActionSheet showFromTabBar:self.tabBarController.tabBar];
        [pickerActionSheet setBounds:CGRectMake(0, 0, 320, 464)];
        [pickerActionSheet release];

        timeDatePicer.hidden=NO;
        insertDatePicker.hidden=YES;


    } 

    textFieldDidBeginEditing=textField;
    [textField resignFirstResponder];

}

Ответы [ 2 ]

1 голос
/ 14 февраля 2012

Нет необходимости скрывать insertDatePicker и timeDatePicer.Он будет удален, как только вы отпустите окно выбора.

Также это ошибка, удалите эту строку.

textFieldDidBeginEditing = textField;

Я очистил ваш код. Теперь он работает нормально.

-(void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField.tag==11) {
        NSLog(@"text fiels work out>>%d",textField.tag);
        //UIActionSheet
        pickerActionSheet  =[[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Done" destructiveButtonTitle:nil otherButtonTitles:nil];
        pickerActionSheet.actionSheetStyle=UIActionSheetStyleDefault;
        //date picker    
        insertDatePicker=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 70, 325, 300)];
        insertDatePicker.datePickerMode=UIDatePickerModeDate;
        insertDatePicker.date=[NSDate date];
        [insertDatePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];
        //[self.view addSubview:insertDatePicker];
        [pickerActionSheet addSubview:insertDatePicker];
        [insertDatePicker release];
    [pickerActionSheet showFromTabBar:self.tabBarController.tabBar];
        [pickerActionSheet setBounds:CGRectMake(0, 0, 320, 464)];

    }else 
    {
        NSLog(@"text fiels work out>>%d",textField.tag);
        //UIActionSheet
        pickerActionSheet  =[[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Done" destructiveButtonTitle:nil otherButtonTitles:nil];
        pickerActionSheet.actionSheetStyle=UIActionSheetStyleDefault;

        //time picker
        timeDatePicer=[[UIDatePicker alloc] initWithFrame:CGRectMake(0, 70, 325, 300)];
        timeDatePicer.datePickerMode=UIDatePickerModeTime;
        timeDatePicer.date=[NSDate date];
        [timeDatePicer addTarget:self action:@selector(timeChanged:) forControlEvents:UIControlEventValueChanged];
        [pickerActionSheet addSubview:timeDatePicer];
        [timeDatePicer release];
    [pickerActionSheet showFromTabBar:self.tabBarController.tabBar];

        [pickerActionSheet setBounds:CGRectMake(0, 0, 320, 464)];
        [pickerActionSheet release];

    } 
    [textField resignFirstResponder];

}
1 голос
/ 14 февраля 2012

В .h файле

Do Synthesize

   UIActionSheet *_pickerActionSheet;
   @property (nonatomic,retain)UIActionSheet *pickerActionSheet;

В .m файле

    @synthesize pickerActionSheet =_pickerActionSheet;

    where "pickerActionSheet" replace By "self.pickerActionSheet"
    don't release "pickerActionSheet" here 

В методе Dealloc

 release Here 
   [_pickerActionSheet release];
...