Ios 我以编程方式创建了UIDatePicker,并让所选日期的UILabel显示,但未能让它正确显示

Ios 我以编程方式创建了UIDatePicker,并让所选日期的UILabel显示,但未能让它正确显示,ios,objective-c,uidatepicker,programmatically-created,Ios,Objective C,Uidatepicker,Programmatically Created,我试图创建不带故事板的UIDatePicker,让选定日期的UILabel显示出来,但当在模拟器上拾取另一个日期时,标签显示得就像是堆积起来的一样 - (void)viewDidLoad { [super viewDidLoad]; UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 10,100,100)]; [self.view addSubview:myLabel]; UIDat

我试图创建不带故事板的UIDatePicker,让选定日期的UILabel显示出来,但当在模拟器上拾取另一个日期时,标签显示得就像是堆积起来的一样

- (void)viewDidLoad {
    [super viewDidLoad];

    UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(10, 10,100,100)];
    [self.view addSubview:myLabel];

    UIDatePicker *myPicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(10, 10, 200, 200)];

    myPicker.datePickerMode = UIDatePickerModeDate;

    [myPicker addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:myPicker]; 
}


- (void)pickerChanged:(id)sender
{
     NSDateFormatter *df = [[NSDateFormatter alloc] init];   
     UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, 300, 200, 200)];

     df.dateFormat = @"yyyy/MM/dd HH:mm";
     myLabel.text = [df stringFromDate:[sender date]];
     [self.view addSubview:myLabel];   
}
截图如下:


我是个初学者,找不到解决办法。有人知道如何解决这个问题吗?提前感谢。

这是因为每次日期更改时,您都会创建一个新标签

您需要重用组件,在视图中创建它

- (void)viewDidLoad() {
    ....
   self.myLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, 300, 200, 200)];
   [self.view addSubview:self.myLabel];
}
因此,您可以只设置文本:

- (void)pickerChanged:(id)sender {
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateFormat = @"yyyy/MM/dd HH:mm";
    self.myLabel.text = [df stringFromDate:[sender date]]; 
}

这是因为每次日期更改时,您都要创建一个新标签

您需要重用组件,在视图中创建它

- (void)viewDidLoad() {
    ....
   self.myLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, 300, 200, 200)];
   [self.view addSubview:self.myLabel];
}
因此,您可以只设置文本:

- (void)pickerChanged:(id)sender {
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    df.dateFormat = @"yyyy/MM/dd HH:mm";
    self.myLabel.text = [df stringFromDate:[sender date]]; 
}

首先在
viewDidLoad

 UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, 300, 200, 200)];
   [self.view addSubview:self.myLabel];
然后在标签的
PickerChange

self.myLabel.text = [df stringFromDate:[sender date]]; 

首先在
viewDidLoad

 UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, 300, 200, 200)];
   [self.view addSubview:self.myLabel];
然后在标签的
PickerChange

self.myLabel.text = [df stringFromDate:[sender date]]; 

谢谢真的很好吃,谢谢!它真的很管用。