2013-11-28 3 views
1

У меня есть UIViewController с UIDatePicker внутри. Подключаю UIDatePicker с IBOutlet собственности в классе заголовка, потому что я использую раскадровки в моем приложении: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 может выполнять связанный с ним opration. Лучше прочитайте эту ссылку 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

Смежные вопросы