2010-11-28 22 views
1

J'essaie d'ajouter une sous-vue à ma vue principale. Voici le code correspondant de ma vueController:En essayant d'ajouter une sous-vue, drawRect n'est pas appelé

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    MyUIViewSubclass* myView = [[MyUIViewSubclass alloc] init]; 
    [self.view addSubview:myView]; // self.view is a simple UIView 
    [myView setNeedsDisplay]; 
} 

drawRect dans myView n'est pas appelé. Toutefois, si j'utilise MyUIViewSubclass comme vue principale de viewController (en le définissant dans Interface Builder), drawRect est appelé.

Que dois-je faire pour que drawRect soit appelé dans ma sous-vue?

+0

Ok, compris. Ne définissait pas les limites de ma sous-vue. – morgancodes

+0

En fait, devrait être en train de définir les limites, pas le cadre. Fonctionne comme prévu maintenant – morgancodes

+0

Vous devriez probablement fermer cette question ensuite. – Rog

Répondre

7

Dans votre sous-classe vous devez utiliser l'initialiseur désigné pour UIView:

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) 
    { 
     //Implementation code... 
    } 
} 
+0

Merci. Mais que faire si je veux rafraîchir le contenu de ma sous-classe? Si je dessinais juste une fois, j'irais de l'avant et utiliserait initWithFrame, mais j'ai besoin d'un moyen d'avoir la sous-vue redessinée elle-même. – morgancodes

1

Ok, figured it out. Ne définissait pas le cadre de mon sous-vue.

+0

C'est ce que je voulais dire en utilisant l'initaliser désigné :) – Rog