UIDatePicker没有更新UILabel

时间:2012-10-06 11:04:20

标签: xcode ios5 uidatepicker

我有一个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];
}

截图

enter image description here enter image description here

2 个答案:

答案 0 :(得分: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”方法是否正在调用。

答案 1 :(得分: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];
}

希望这有助于其他人。