모달 날짜 선택 도구는 어떻게 구현합니까?아이폰 SDK : 모달 날짜 선택 도구를 구현하는 방법은 무엇입니까?
내가 원하는 것은 사용자가 텍스트 필드를 입력하면 날짜 선택기가있는 새보기가 만들어집니다. 거기에서 사용자는 상호 작용하고 날짜를 선택할 수 있습니다. 보기가 닫히면 어떻게 든 호출자에게 날짜를 반환합니다. 이것이 가능한가?
지금까지 필자는 공백 때문에 내 메인 양식에 날짜 선택 도구를 넣을 수 없습니다.
미리 감사드립니다.
모달 날짜 선택 도구는 어떻게 구현합니까?아이폰 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];
}
간단한 작업 솔루션 : 당신의하는 .m에서
@property (nonatomic,strong) IBOutlet UIDatePicker *datePicker;
@property (weak, nonatomic) IBOutlet UITextField *historyDateSelect;
@property (nonatomic, retain) UIToolbar *dateToolbar;
: 당신의 .H에서
- (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
위대한 대답, 에드! – typeoneerror
안녕하세요 에드, 여기 초보자의 비트, 당신은 전혀 작동 데모를 제공 할 수 있습니까? 내가 뭔가를 놓치고 있다고 생각해! – jimbo
물론 ... 위 코드가 잘못된 이유는 무엇입니까? 작동하지 않습니까? 그것해야합니다. –