UIDatePicker, UIActionSheet и обработка данных - PullRequest
1 голос
/ 13 декабря 2011

Так что я прекрасно понимаю, как вытащить дату из палитры. Но я не могу вытащить его из списка выбора даты на UIActionSheet. Наша текущая настройка - это форма для ввода данных с помощью нескольких средств выбора, все из которых используют метод didSelectRow для источника данных, причем все они используют одно и то же представление для указанного источника данных.

Теперь, похоже, это не работает для UIDatePicker. Вот что у меня есть для моего средства выбора даты, оно похоже на другие мои средства выбора, включая методы обработки изменения значений.

-(IBAction)ageBox{
    pickerAction=[[UIActionSheet alloc]initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
    [pickerAction setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
    CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

    UIDatePicker *datePicker =[[UIDatePicker alloc]initWithFrame:pickerFrame];

    [pickerAction addSubview:datePicker];

    UISegmentedControl *closeButton=[[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObject:@"OK"] ];
    closeButton.momentary = YES;
    closeButton.frame=CGRectMake(260, 7.0f, 50.0f, 30.0f);
    closeButton.segmentedControlStyle =UISegmentedControlStyleBar;
    closeButton.tintColor = [UIColor blackColor];
    date = datePicker.date;
    [closeButton addTarget:self action:@selector(closePicker) forControlEvents:UIControlEventValueChanged];
    [pickerAction addSubview:closeButton];
    whatToChange = 5;
    [pickerAction showInView:self.view];
    [pickerAction setBounds:CGRectMake(0, 0, 320, 464)];
}

Помогите ли вытащить дату из палитры, пока она находится на листе действий, или когда я нажму "ОК", вытащить ее до того, как она будет уничтожена?

1 Ответ

1 голос
/ 13 декабря 2011

Я предполагаю, что pickerAction является ivar из self, основываясь на первой строке кода в методе. Я могу придумать пару способов, я уверен, что есть и другие.

1) Сделайте также datePicker и ivar. Таким образом, у вас есть ссылка на него для вашего 'ok' метода.

2) Получить ссылку от самого pickerAction. Поскольку вы добавили datePicker как subview, вы можете найти его так:

    // Somewhere in your "ok" method
    for (UIView *view in pickerAction.subviews) {
        if ([view isKindOfClass:[UIDatePicker class]]){
            UIDatePicker *picker = (UIDatePicker *)view;
            NSDate *pickedDate = picker.date;
        }
    }
...