如何实现模式日期选择器? [英] How to implement a modal date picker?

查看:74
本文介绍了如何实现模式日期选择器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Ed Marty的答案中的代码来解决问题这里,但确实有一点麻烦.

I am using code from Ed Marty's answer for the question here but am having real trouble with a few bits.

单击一个按钮,我就会显示日期选择器,但是没有显示完成"按钮.我也从该行中得到一个错误:

On the click of a button I have got the datepicker appearing, but the 'done' button however isn't. I am also getting an error from the line:

[delegate datePickerController:controller didPickDate:datePicker.date];

错误消息:

未声明控制器"(此功能首次使用)

'controller' undeclared (first use in this function)

总共我有6个文件:

  • ModalDatePickerViewController.m
  • ModalDatePickerViewController.h
  • ModalDatePickerAppDelegate.m
  • ModalDatePickerAppDelegate.h
  • DatePickerController.m
  • DatePickerController.h

我的DatePickerController.h看起来像:

My DatePickerController.h is looking like:

    #import <UIKit/UIKit.h>


@class DatePickerController;
@protocol DatePickerControllerDelegate
- (void) datePickerController:(DatePickerController *)controller didPickDate:(NSDate *)date;
@end

@interface DatePickerController : UIViewController {
    UIDatePicker *datePicker;
    NSObject <DatePickerControllerDelegate> *delegate;
}

@property (nonatomic, retain) UIDatePicker *datePicker;
@property (nonatomic, assign) NSObject <DatePickerControllerDelegate> *delegate;
@end

和DatePickerController.m:

and the DatePickerController.m:

#import "DatePickerController.h"

@implementation DatePickerController

@synthesize datePicker;
@synthesize delegate;

- (void) loadView {
    self.view = [[[UIView alloc] init] autorelease];
    self.datePicker = [[[UIDatePicker alloc] init] autorelease];
    [self.view addSubview:self.datePicker];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"Done" forState:UIControlStateNormal];
    button.center = CGPointMake(160,230);
    [button addTarget:self action:@selector(done) forControlEvents:(UIControlEventTouchUpInside)];
    [self.view addSubview:button];
}

- (void) done {
    [delegate datePickerController:controller didPickDate:datePicker.date];
}

- (void) dealloc {
    [datePicker release];
    [super dealloc];
}

@end

在主视图上,有一个调用此类的按钮,如下所示:

On the main view I have a button that call this class as below:

#import "ModalDatePickerViewController.h"

@implementation ModalDatePickerViewController

- (void) pickDate {
    DatePickerController *screen = [[[DatePickerController alloc] init] autorelease];
    screen.delegate = self;
    [self presentModalViewController:screen animated:YES];
}

- (void) datePickerController:(DatePickerController *)controller didPickDate:(NSDate *)date {
    //[self doSomethingWithDate:date];
    [controller dismissModalViewControllerAnimated:YES];
}
- (IBAction)HitMe:(id)sender {
    [self pickDate];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload {
}

- (void)dealloc {
    [super dealloc];
}
@end

和:

#import <UIKit/UIKit.h>
#import "DatePickerController.h"

@interface ModalDatePickerViewController : UIViewController <DatePickerControllerDelegate> {

}

- (IBAction)HitMe:(id)sender;

@end

推荐答案

在此行:

[委托datePickerController:controller didPickDate:datePicker.date];

尝试将 controller 替换为 self .

这篇关于如何实现模式日期选择器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆