【问题标题】:UIDatePicker doesn't change valueUIDatePicker 不会改变值
【发布时间】:2013-11-28 13:13:19
【问题描述】:

我有UIViewController,里面有UIDatePicker。我在标题类中将UIDatePickerIBOutlet 属性连接起来,因为我在我的应用程序中使用故事板:

#import <UIKit/UIKit.h>
@protocol CreationDateDelegate <NSObject>
@optional
    -(void)selectedDateIs:(NSString*)dateValue;
@end

@interface SelectCreationDateViewController : UIViewController
{
    IBOutlet UIDatePicker *datePicker;
}
@property (nonatomic,assign)id<CreationDateDelegate>creationDateDelegate;
@property (nonatomic,retain) IBOutlet UIDatePicker *datePicker;

@end

--- .m -----

#import "SelectCreationDateViewController.h"
@interface SelectCreationDateViewController ()
{
    NSString *dateFromString;
}
@end

@implementation SelectCreationDateViewController
@synthesize creationDateDelegate,datePicker;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) 
    {
    }
    return self;
}

- (void)viewDidLoad
{   
    self.title = @"Select creation date";
    [super viewDidLoad];

    [datePicker setHidden:NO];
    datePicker.timeZone = [NSTimeZone localTimeZone];
    [datePicker setDatePickerMode:UIDatePickerModeDate];

    [datePicker addTarget:self action:@selector(changeValueOfDatePicker:) forControlEvents:UIControlEventValueChanged];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)viewWillDisappear:(BOOL)animated{
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    NSString *dateFromString = [formatter stringFromDate:datePicker.date];
    [self.creationDateDelegate selectedDateIs:dateFromString];
}

-(void)changeValueOfDatePicker:(id)sender{
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    dateFromString = [formatter stringFromDate:datePicker.date];
    [self.creationDateDelegate selectedDateIs:dateFromString];
    NSLog(@"Date from string value equal %@",dateFromString);
}
@end

为什么每次我改变DatePicker的值时返回的值都不改变?有任何想法吗?另外,如果我在代码中犯了任何错误,请告诉我。

【问题讨论】:

  • 你的 changeValueOfDatePicker: 方法的代码在哪里?
  • UIDatePicker 的声明代表在哪里
  • @iDev UIDatePicker 没有委托。
  • 从 NSLog 得到什么
  • 在 NSlog 的 datePicker.date 中检查值之前

标签: ios iphone nsdateformatter uidatepicker


【解决方案1】:

也设置一些日期格式

 -(void)changeValueOfDatePicker:(id)sender{

        NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
        [formatter setDateFormat:@"yyyy-MM-dd HH:mm"];

        dateFromString = [formatter stringFromDate:datePicker.date];
        [self.creationDateDelegate selectedDateIs:dateFromString];
        NSLog(@"Date from string value equal %@",dateFromString);
    }  

【讨论】:

  • [格式化字符串FromDate:datePicker.date];默认情况下,没有将 datFormate 设置为 NSDateFormatter。您需要手动设置一些 dateFromat,然后只有 dateFormatter 能够执行相关操作。最好阅读此链接developer.apple.com/library/ios/documentation/cocoa/reference/…
  • 感谢您提供有用的信息,问候
【解决方案2】:

通过添加这行代码来修复它

仅当您使用 iOS7 时 - 在方法中 (void)viewDidLoad 方法

[self.datePicker setDate:[NSDate date] animated:YES];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2023-04-10
    • 1970-01-01
    • 2023-03-21
    • 2019-06-04
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多