UIDatePicker, UIActionSheet и обработка данных

Итак, я прекрасно понимаю, как вытащить дату из средства выбора даты. Но я не могу вытащить его из средства выбора даты на 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)];
}

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


person Spencer Cole    schedule 13.12.2011    source источник


Ответы (1)


Я предполагаю, что 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;
        }
    }
person NJones    schedule 13.12.2011
comment
Второй сработал как шарм. Я добавил NSDateFormatter * df = [[NSDateFormatter alloc] init]; df.dateStyle = NSDateFormatterMediumStyle; date = [NSString stringWithFormat: @% @, [df stringFromDate: PickDate]]; к этому, чтобы превратить его в строку, которую я мог бы установить в другом месте. Спасибо! - person Spencer Cole; 13.12.2011