簡體   English   中英

我以編程方式創建了UIDatePicker,並讓所選日期的UILabel顯示,但未能使其正確顯示

[英]I created UIDatePicker programmatically and let the UILabel of the selected date show, but failed to let it show properly

我嘗試創建沒有情節提要的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];   
}

屏幕截圖如下: http : //i.stack.imgur.com/VnJbD.png

我是初學者,找不到解決方案。 有人知道如何解決這個問題嗎? 先感謝您。

這是因為您每次更改日期都在創建一個新標簽

您需要重用您的組件,並在加載后創建它

- (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添加Label

 UILabel *myLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, 300, 200, 200)];
   [self.view addSubview:self.myLabel];

然后在PickerChange中的標簽中添加日期

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM