Utilizzare un delegato!
Intestazione:
@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
classe:
@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
tutte quelle stronzate in loadview può essere sostituito con un pennino, se si preferisce. Assicurati di dichiarare datePicker come IBOutlet. E quando si desidera utilizzare effettivamente è:
- (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];
}
fonte
2009-10-26 21:39:45
Ottima risposta, Ed! – typeoneerror
Ciao Ed, un po 'un principiante qui, potresti fornire una demo funzionante? Pensa mi manchi qualcosa! – jimbo
Certo ... cosa c'è di sbagliato nel codice sopra? Non funziona? Dovrebbe. –