2010-09-29 6 views
3

J'utilise le code de la réponse de Ed Marty pour la question here mais j'ai de gros problèmes avec quelques bits.Comment implémenter un sélecteur de date modal?

En cliquant sur un bouton, j'ai le datepicker qui apparaît, mais le bouton 'done' ne l'est pas. Je reçois également une erreur de la ligne:

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

Message d'erreur:

'contrôleur' ​​non déclaré (première utilisation dans cette fonction)

Dans tout ce que j'ai 6 fichiers :

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

Mon DatePickerController.h est à la recherche comme:

#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 

et le 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 

Sur la vue principale que j'ai un bouton qui appellent cette classe comme ci-dessous:

#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 

et:

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

@interface ModalDatePickerViewController : UIViewController <DatePickerControllerDelegate> { 

} 

- (IBAction)HitMe:(id)sender; 

@end 
+0

Quelle est l'erreur ...? – RickiG

+0

Désolé RickiG Cela pourrait aider! J'ai maintenant ajouté à poster ... Oh et être un peu gentil d'un débutant ... – jimbo

Répondre

4

Sur cette ligne:

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

essayez de remplacer controller par self.

Questions connexes