iphone - UIDatePicker DidSelectRow 方法?

标签 iphone objective-c cocoa-touch

我知道 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;
}

最佳答案

UIDatePicker 是一个 UIControl,所以使用

[picker addTarget:yourController action:@selector(yourAction:) forControlEvents:UIControlEventValueChanged];

向您的 Controller 发送消息。然后 Controller 可以获取日期选择器的状态并更新标签。

如果你的 picker 和 label 都是同一个类中的 outlet,在 viewDidLoad 中:

[self.picker addTarget:self action:@selector(updateLabelFromPicker:) forControlEvents:UIControlEventValueChanged];

然后创建updateLabelFromPicker:

- (IBAction)updateLabelFromPicker:(id)sender {
    self.label.text = [self.dateFormatter stringFromDate:self.picker.date];    
}

你需要一个 NSDateFormatter 来使日期变得漂亮。

关于iphone - UIDatePicker DidSelectRow 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5748752/

相关文章:

ios - 为什么它在主线程上运行?

ios - 如何将 UIImageView 旋转 20 度?

iphone - UITableview 调整大小动画

iphone - 应用程序未通过代码设计验证?

iphone - 如何在不插入空格的情况下替换 NSString 中的字符?

objective-c - NSTimer 精度

objective-c - 使用@import ...作为默认值而不是#import <...>

objective-c - 如何设置另一个变量/UILabel 变量的引用变量?

iphone - iOS 上的 Chrome 显示 jQuery Mobile 页面的奇怪 URL (ASP.NET MVC)

iphone - 停止在应用程序进入前台后调用setKeepAliveTimeout处理程序吗?