0

我有一个 UIDatePicker 并尝试根据用户选择的日期实时更新 UILabel。如果用户选择一个日期(比如 2012 年 1 月 21 日),然后改变主意(比如 2013 年 3 月 21 日),我希望 UILabel 能够反映这一变化。

到目前为止,UILabel 仅反映当前日期,即使用户从 UIDatePicker 中选择了另一个日期,也不会更新其文本。我还搜索了解决此问题的指针,但无济于事。任何帮助将不胜感激。谢谢。

到目前为止的代码:.h 文件,我有

@property (strong, nonatomic) IBOutlet UILabel *entryDateSetLabel;
@property (strong, nonatomic) IBOutlet UIDatePicker *entryDateSelected;

- (IBAction)datePickerDateChanged:(id)sender;

datePickerDateChanged 连接到日期选择器的值更改事件

.m 文件,

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.entryDateSelected = [[UIDatePicker alloc] init];

    [self.entryDateSelected addTarget:self action:@selector(datePickerDateChanged:) forControlEvents:UIControlEventValueChanged];
}

- (IBAction)datePickerDateChanged:(id)sender {

    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init];
    [outputFormatter setDateFormat:@"MMMM d, yyyy"];

    NSString *entryDateInString = [outputFormatter stringFromDate:self.entryDateSelected.date];

    [[self entryDateSetLabel] setText: entryDateInString];
}

截图

在此处输入图像描述 在此处输入图像描述

4

2 回答 2

2

在“值更改”事件中连接数据选择器和

使用这个代码我从其他复制它所以你必须做一些改变

NSDate *today1 = pkrViewDate.date;
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMMM dd, yyyy"];
NSString *dateString11 = [dateFormat stringFromDate:today1];
lblDate.text=dateString11;

ans 还检查当您滚动 datepicker 时“datePickerDateChanged”方法是否正在调用。

于 2012-10-06T11:29:06.693 回答
0

刚刚解决了问题。:-)

viewDidLoad 应该是

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSDate *now = [NSDate date];
    [_entryDateSelected setDate:now animated:YES];

     //self.entryDateSelected = [[UIDatePicker alloc] init];

    [self.entryDateSelected addTarget:self action:@selector(datePickerDateChanged:) forControlEvents:UIControlEventValueChanged];
}

希望这对其他人有帮助。

于 2012-10-06T23:24:48.840 回答