2010-05-29 7 views
0

J'ai ClockViewController.h et ClockViewController.m hérités de UIViewController.
Aussi 2 autres fichiers ClockView.h et ClockView.m hérités de UIView. Dans le générateur d'interface, j'ai sélectionné la classe "ClockView" pour l'horloge, mais mon drawRect n'est pas en cours d'exécution. Je l'appelle via setNeedsDisplay à partir d'une fonction de minuterie. Même la fonction de minuterie n'appelle pas.
ici est le code
ClockViewController.m
drawRect ne s'exécute pas

import "ClockViewController.h" 

@implementation ClockViewController 
- (void)didReceiveMemoryWarning { 
    // Releases the view if it doesn't have a superview. 
    [super didReceiveMemoryWarning]; 

    // Release any cached data, images, etc that aren't in use. 
} 

- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
    [super viewDidUnload]; 
} 

- (void)dealloc { 
    [super dealloc]; 
} 
@end 

Voici ClockView.m

import "ClockView.h" 

@implementation ClockView 

-(id)initWithCoder:(NSCoder *)coder{ 
    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(clockTick) userInfo:nil repeats:YES]; 

    return self; 
} 

-(id)initWithFrame: (CGRect)frame{ 
    if(self = [super initWithFrame: frame]){ 
     //Initialization code 
    } 
    return self; 
} 

-(void) drawRect: (CGRect)rect{ 
    NSLog(@"from Rect"); 
} 

-(void)clockTick{ 
    NSLog(@"test"); 
} 

-(void)dealloc{ 
    [super dealloc]; 
} 
@end 

+0

N'importe quel code? _____ – kennytm

Répondre

1

Votre -initWithCoder: devez appeler [super initWithCoder:coder].

De même, par souci de cohérence, -initWithCoder: et -initWithFrame: doivent appeler le code qui installe le temporisateur.

+0

ne fonctionne toujours pas. J'ai appelé [super initWithCode: coder et ajouté timer = ... dans la méthode initWithFrame. – coure2011

+0

merci de l'avoir fait fonctionner. Créer à nouveau du projet à partir de zéro et appliqué votre réponse. – coure2011