2010-06-24 6 views
0

J'ai un UIViewController et je voudrais appeler drawRect pour que je puisse dessiner sur la vue mais rien ne se passe.ViewController et drawRect

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
...code... 
} 

@end 

et la mise en œuvre

#import "ViewController.h" 


@implementation ViewController 

-(void) drawRect:(CGRect) rect { 
draw a pony 
} 

- (void)viewDidLoad { 
} 

- (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 { 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


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

@end 

Mais poney est dessiné sur la vue lorsque l'application est exécutée, qu'est-ce que je fais mal?

Répondre

4

Les messages UIViewController ne contiennent pas le message surchargé drawRect. Vous devez créer une classe personnalisée dérivée de UIView et remplacer le message drawRect par là.

Vous pouvez remplacer un message (UIView *)view pour UIViewController et retour propre coutume UIView ou en classe de changement Interface Builder de UIView à propre classe.

0

Appel setNeedsDisplay sur votre UIView, pas le ViewController, est une façon de déclenchement et redéclencher votre code drawRect, et vous pouvez envoyer ce message conditionnel à chaque fois que vous avez besoin de mettre à jour toute la vue.

Vous pouvez l'appeler dans une mesure UIView utilisant

[self.setNeedsDisplay] 

ou du contrôleur View en faisant la UIView une propriété du contrôleur et appelant

[self.myView setNeedsDisplay] 
Questions connexes