如何實現模式日期選擇器?iphone SDK:如何實現模式日期選擇器?
我想要發生的是,當用戶輸入一個文本字段時,會創建一個新的視圖,其中包含日期選擇器。從那裏,用戶可以交互並選擇一個日期。當視圖關閉時,它應該以某種方式將日期返回給調用者。這可能嗎?
順便說一句,我不能把日期選擇器放在我的主窗體上,因爲空間。
在此先感謝。
如何實現模式日期選擇器?iphone SDK:如何實現模式日期選擇器?
我想要發生的是,當用戶輸入一個文本字段時,會創建一個新的視圖,其中包含日期選擇器。從那裏,用戶可以交互並選擇一個日期。當視圖關閉時,它應該以某種方式將日期返回給調用者。這可能嗎?
順便說一句,我不能把日期選擇器放在我的主窗體上,因爲空間。
在此先感謝。
使用委託人!
頁眉:
@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
類:
@implementation DatePickerController
- (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,240);
[button addTarget:self action:@selector(done) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button];
}
- (void) done {
[delegate datePickerController:self didPickDate:datePicker.date];
}
- (void) dealloc {
[datePicker release];
[super dealloc];
}
@end
中的loadView所有的垃圾可以用NIB如果你願意更換。只要確保將datePicker聲明爲IBOutlet即可。 而當你要實際使用它:
- (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];
}
簡單有效的解決方案:
在你的.h:
@property (nonatomic,strong) IBOutlet UIDatePicker *datePicker;
@property (weak, nonatomic) IBOutlet UITextField *historyDateSelect;
@property (nonatomic, retain) UIToolbar *dateToolbar;
在您的m:
- (void)viewDidLoad
{
[super viewDidLoad];
self.datePicker = [[UIDatePicker alloc]init];
[self.datePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObject:doneButton]];
self.dateToolbar = toolbar;
self.historyDateSelect.inputView = self.datePicker;
self.historyDateSelect.inputAccessoryView = self.dateToolbar;
}
而且而已。 (我在本地測試和工作)
偉大的解決方案。 – GuybrushThreepwood 2012-10-17 14:21:18
偉大的答案,埃德! – typeoneerror 2010-08-30 01:06:13
嗨,Ed,這裏有一位新手,你能否提供一個工作演示?想想我錯過了什麼! – jimbo 2010-09-23 16:18:01
當然...上面的代碼有什麼問題?它不工作?這應該。 – 2010-09-23 19:56:23