如何实现模式日期选择器? [英] How to implement a modal date picker?
问题描述
我正在使用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屋!