Xcode4 UIDatePicker、UIActionSheet和数据处理

Xcode4 UIDatePicker、UIActionSheet和数据处理,xcode4,ios5,uidatepicker,uiactionsheet,Xcode4,Ios5,Uidatepicker,Uiactionsheet,所以我很清楚如何从日期选择器那里提取日期。但我似乎无法从UIActionSheet上的日期选择器那里得到它。我们当前的设置是一个表单,用于使用几个选择器输入数据,所有选择器都使用数据源的didSelectRow方法,所有选择器都使用所述数据源的相同视图 现在,对于UIDatePicker来说,这似乎不适用于同样的方式。这是迄今为止我为我的日期选择器所做的,它与我的其他选择器类似,包括处理值更改的方法 -(IBAction)ageBox{ pickerAction=[[UIActionSh

所以我很清楚如何从日期选择器那里提取日期。但我似乎无法从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)];
}

当日期选择器在操作表上时,或者当我单击“确定”时,在销毁日期之前,从日期选择器中提取日期,有什么帮助吗?

我假设
pickerAction
是一个
ivar
,基于方法中的第一行代码。我可以想出几个办法,我相信还有更多的办法

1) 使
datePicker
也成为
ivar
。这样,您的
'ok'
方法就有了对它的引用

2) 从
pickerAction
本身获取引用。由于已将
日期选择器添加为
子视图
,因此可以如下所示:

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

我假设
pickerAction
self
ivar
,基于方法中的第一行代码。我可以想出几个办法,我相信还有更多的办法

1) 使
datePicker
也成为
ivar
。这样,您的
'ok'
方法就有了对它的引用

2) 从
pickerAction
本身获取引用。由于已将
日期选择器添加为
子视图
,因此可以如下所示:

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

第二个很有魅力。我添加了NSDateFormatter*df=[[NSDateFormatter alloc]init];df.dateStyle=nsdateformatterminiumstyle;日期=[NSString stringWithFormat:@“%@,[df stringFromDate:pickedDate]];把它变成一根弦,我可以把它放在别的地方。谢谢第二个很有魅力。我添加了NSDateFormatter*df=[[NSDateFormatter alloc]init];df.dateStyle=nsdateformatterminiumstyle;日期=[NSString stringWithFormat:@“%@,[df stringFromDate:pickedDate]];把它变成一根弦,我可以把它放在别的地方。谢谢