8 iphone cocoa-touch objective-c
我知道UIPickerViews在选择行时使用didSelectRow方法来更新标签等.
我有一个UIDatePicker,当选择一行并按下完成按钮时更新标签,但我也想要一个随每个选择更新的UILabel,因此当用户更改日期时它会进行实时更新.我找不到任何方法,比如didSelectRow用于日期选择器.这怎么可能?
- (IBAction)dateButtonPressed
{
[dateView setFrame:CGRectMake(0, self.view.frame.size.height, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:dateView];
UIBarButtonItem *acceptButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismssPickerChangeDate)];
self.navigationItem.rightBarButtonItem = acceptButton;
[acceptButton release];
UIBarButtonItem *cancelButton1 = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(dismssPickerCancel)];
self.navigationItem.leftBarButtonItem = cancelButton1;
[cancelButton1 release];
self.navigationItem.title = @"Select Date";
self.navigationItem.hidesBackButton = YES;
[UIView animateWithDuration:.5 animations:^{
[dateView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
}];
NSDate *myDate = picker.date;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//NSDate *date = [NSDate date];
[dateFormatter setDateFormat:@"MMM d y"];
NSString *dateString = [dateFormatter stringFromDate:myDate];
NSLog(@"New Date is = %@",dateString);
dateLabel.text = dateString;
}
Run Code Online (Sandbox Code Playgroud)
Ter*_*cox 25
UIDatePicker是一个UIControl,所以使用
[picker addTarget:yourController action:@selector(yourAction:) forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
向控制器发送消息.然后,控制器可以获取日期选择器的状态并更新标签.
如果您的选择器和标签都是同一类中的出口,则在viewDidLoad中:
[self.picker addTarget:self action:@selector(updateLabelFromPicker:) forControlEvents:UIControlEventValueChanged];
Run Code Online (Sandbox Code Playgroud)
然后创建updateLabelFromPicker:
- (IBAction)updateLabelFromPicker:(id)sender {
self.label.text = [self.dateFormatter stringFromDate:self.picker.date];
}
Run Code Online (Sandbox Code Playgroud)
你需要一个NSDateFormatter来使日期漂亮.