2013-11-28 62 views
1

我有UIViewControllerUIDatePicker里面。我在头类IBOutlet属性连接UIDatePicker,因为我用我的应用程序的故事板:UIDatePicker不更改值

#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返回值的值不会更改?有任何想法吗?另外,让我知道如果我在代码中犯了任何错误。

+0

您的代码changeValueOfDatePicker:方法在哪里? –

+1

其中声明了UIDatePicker的代表 – codercat

+0

@iDev没有UIDatePicker的代理。 –

回答

0

设置一些dateformate也

-(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); 
    } 
+0

奇怪,但它的工作原理。你能解释为什么吗? – sonoDamiano

+0

[formatter stringFromDate:datePicker.date];由defualt没有datFormate设置为NSDateFormatter。您手动需要设置一些dateFromat,然后只有dateFormatter能够执行关联的操作。更好的阅读这个链接https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSDateFormatter_Class/Reference/Reference.html –

+0

谢谢你的帮助信息,问候 – sonoDamiano

0

修复它加入这行代码

仅当您使用iOS7 - 在法(无效)viewDidLoad方法

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

我正在使用iOS7,但它不起作用 – sonoDamiano