Iphone UIDatePicker:获取显示在两个文本字段中的日期

Iphone UIDatePicker:获取显示在两个文本字段中的日期,iphone,ios,xcode,uitextfield,uidatepicker,Iphone,Ios,Xcode,Uitextfield,Uidatepicker,我在互联网和这个网站上搜索了好几个小时——我发现了许多类似的问题,并尝试了人们提出的建议,但我似乎找不到任何与我使用的代码相关的东西 下面是正在发生的事情: 我有两个文本字段(DateOpen和dateClosed),我希望在其中显示日期。当你点击每个文本字段时,日期选择器就会出现(我可以让这个部分正常工作)。但是,我在获取日期显示在dateClosed文本字段中时遇到了一个问题 对于DateOpen-当我单击文本字段时,日期选择器出现,我选择一个日期,它出现在该文本字段中。它工作得很好 问题是

我在互联网和这个网站上搜索了好几个小时——我发现了许多类似的问题,并尝试了人们提出的建议,但我似乎找不到任何与我使用的代码相关的东西

下面是正在发生的事情:

我有两个文本字段(DateOpen和dateClosed),我希望在其中显示日期。当你点击每个文本字段时,日期选择器就会出现(我可以让这个部分正常工作)。但是,我在获取日期显示在dateClosed文本字段中时遇到了一个问题

对于DateOpen-当我单击文本字段时,日期选择器出现,我选择一个日期,它出现在该文本字段中。它工作得很好

问题是:

对于dateClosed-当我单击文本字段时,会出现datepicker(效果很好),我选择了一个日期,但它会出现在dateOpened文本字段中,而不是像预期的那样出现dateClosed

如果您能就如何在dateClosed文本字段中显示日期提出建议,我将不胜感激。谢谢!!!:)

.h文件:

UIActionSheet *dateSheet;

@property (nonatomic, strong)NSDate *openedDate;
@property (nonatomic, strong)NSDate *closedDate;

@property (strong, nonatomic) IBOutlet UITextField *dateOpened;
@property (strong, nonatomic) IBOutlet UITextField *dateClosed;

-(IBAction)dismissKeyboard:(id)sender;

-(void)setOpened;
-(void)setDateField;
-(void)cancelDateSet;
.m文件:

-(void)setOpened { 
    dateSheet = [[UIActionSheet alloc]initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
[dateSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 44, 0, 0);
    UIDatePicker *dateOpenedPicker = [[UIDatePicker alloc]initWithFrame:pickerFrame];
    [dateOpenedPicker setDatePickerMode:UIDatePickerModeDate];
    [dateSheet addSubview:dateOpenedPicker];
    UIToolbar *controlToolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, dateSheet.bounds.size.width, 44)];
    [controlToolBar setBarStyle:UIBarStyleBlack];
    [controlToolBar sizeToFit];
   UIBarButtonItem *spacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
   UIBarButtonItem *setButton = [[UIBarButtonItem alloc]initWithTitle:@"Set Date" style:UIBarButtonItemStyleDone target:self action:@selector(dismissDateSet)];
   UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelDateSet)];
   [controlToolBar setItems:[NSArray arrayWithObjects:spacer, cancelButton, setButton, nil]animated:NO];
   [dateSheet addSubview:controlToolBar];
   [dateSheet showFromTabBar:self.tabBarController.tabBar];
   [dateSheet setBounds:CGRectMake(0, 0, 320, 485)];    
}

-(void)cancelDateSet {
   [dateSheet dismissWithClickedButtonIndex:0 animated:YES];
 }

-(void)setDateField {

    NSArray *datesList = [dateSheet subviews];
    for (UIView *subView in datesList)
    {
        if ([subView isKindOfClass:[UIDatePicker class]]) {
        self.openedDate = [(UIDatePicker *)subView date];
        }
    }

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
    [dateFormatter setDateFormat:@"MM/dd/yyyy"];

    //will display date in dateOpened text field
    [dateOpened setText:[dateFormatter stringFromDate:self.openedDate]];

    //date to display in dateClosed text field - Does not work
    [dateClosed setText:[dateFormatter stringFromDate:self.closedDate]];

    [dateSheet dismissWithClickedButtonIndex:0 animated:YES];
}

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
   [self setOpened];
   return NO;
}

-(IBAction)dismissKeyboard:(id)sender {
    [sender resignFirstResponder];
}
三步

  • 确定要填写的文本字段[开始日期或结束日期],使用标志[使用代理]
  • 显示日期选择器并获取用户收集的日期
  • 根据第一个方法确定的结果[flag]保存日期值,以便作为开始日期和结束日期[if loop]进一步使用
在这里,您的方法没有实现获取self.closedDate的值的3个步骤

  • 确定要填写的文本字段[开始日期或结束日期],使用标志[使用代理]
  • 显示日期选择器并获取用户收集的日期
  • 根据第一个方法确定的结果[flag]保存日期值,以便作为开始日期和结束日期[if loop]进一步使用

在这里,您的方法没有实现为
self.closedDate

获取值。问题似乎是您只设置了
self.openedDate
,谢谢您回答我的问题。我注意到了这一点,但当我将self.closedDate添加到if语句时,日期将出现在两个文本字段中。但我觉得你有什么发现。我认为问题一定在那里。再次感谢!我认为你的问题[类似于这个问题][1][1]:希望这能解决你的问题这一个也类似于你的问题谢谢你回复我!!我认为我太没经验了,无法根据其他解决方案解决我的问题。我真的认为问题在于我的if语句,我只是不知道如何修复它。再次感谢!!问题似乎是你只设置了self.openedDate,谢谢你回答我的问题。我注意到了这一点,但当我将self.closedDate添加到if语句时,日期将出现在两个文本字段中。但我觉得你有什么发现。我认为问题一定在那里。再次感谢!我认为你的问题[类似于这个问题][1][1]:希望这能解决你的问题这一个也类似于你的问题谢谢你回复我!!我认为我太没经验了,无法根据其他解决方案解决我的问题。我真的认为问题在于我的if语句,我只是不知道如何修复它。再次感谢!!