Par programmation, la création de Vues en IOS (comment ça marche)?

Un peu de contexte: je vais à travers le CS193P iTune vidéos et j'ai été bloqué sur la mission 3 pour plus de temps. Fondamentalement, la mission vous demande de programmation pour créer une vue personnalisée pour afficher une forme sur l'écran. Je n'utilise pas de vue les contrôleurs de la voie.

Je ne pouvais pas obtenir mon point de vue à l'écran jusqu'à ce que j'ai traîné un objet de Vue dans Interface Builder et de changer le nom de l'objet à ma classe de vue personnalisée. Donc ma question est quand les gens disent de programmation pour créer une vue, sont-ils juste dire créer manuellement la classe, mais quand vous avez besoin de l'afficher à l'utilisation de l'IB? Je ne peux pas empêcher de se sentir comme j'ai mal compris quelque chose?

edit: laissez-moi être plus clair. Ma vue personnalisée a été initialisé avec une image de 0, 0, 200, 150 et drawRect est surchargé pour dessiner un carré. De mon point de vue ne s'affiche même pas si essayez de l'ajouter à la fenêtre principale à l'intérieur de mon contrôleur:

    UIWindow* window = [UIApplication sharedApplication].keyWindow;
[window addSubview:polygonView];

Cependant, si l'usage faites glisser un point de vue de l'IB et de changer la classe de mon point de vue de classe, elle s'affiche bien.

Edit: Ajout de code. C'est mon contrôleur awakeFromNib méthode où la vue doit être établi.

    - (void)awakeFromNib {
    shape = [[PolygonShape alloc] initWithNumberOfSides:numberOfSidesLable.text.integerValue minimumNumberOfSides:3 maximumNumberOfSides:12];
    polygonView = [[PolygonView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    polygonView.backgroundColor = [UIColor blackColor];
    [window addSubview:polygonView];
    [self updateInterface];  
}

Partie de mon contrôleur updateInterface méthode:

- (void)updateInterface {
    [polygonView setPolygon:shape];
    [polygonView setNeedsDisplay];
...
}

PolygonView.h

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

@interface PolygonView : UIView {
    IBOutlet PolygonShape *polygon; 
}

@property (readwrite, assign) PolygonShape *polygon;

- (void)drawRect:(CGRect)rect;
@end

PolygonView.m

#import "PolygonView.h"

@implementation PolygonView
@synthesize polygon;

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {
        nslog(@"initialized");
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
       CGRect bounds = [self bounds];

    [[UIColor grayColor] set];
    UIRectFill(bounds);

    CGRect square = CGRectMake(10, 10, 10, 100);
    [[UIColor blackColor] set];
    UIRectFill(square);

    [[UIColor redColor] set];
    UIRectFill(square);
    NSLog(@"drawRect called");
}
@end

La polygonView est en cours d'initialisation, mais le drawRect n'est pas appelé.

Où est le keyWindow en cours de création? Si vous n'êtes pas le chargement d'un fichier nib (il n'est pas clair à partir de votre question de savoir si vous êtes ou non), alors que vous auriez à créer la fenêtre avant d'y ajouter votre sous-vue.
Il a été créé dans le AppDelegate classe. Est-ce à dire que je #importer mes polygonView classe, et de la créer?
Il est intéressant de noter que si je mets de l'initialisation et de l'ajout de mon point de vue à la fenêtre de ma updateInterface méthode, elle fonctionne, mais seulement après que je clique sur un bouton qui appelle la méthode. Il semble que le code n'est pas en cours de processus dans awakeFromNib. Des idées?
Peut quelqu'un qui a été dans le cours d'avoir la gentillesse de partager leur code pour le contrôleur? Cette cession n'est pas pour la classe réelle; je suis juste en train d'apprendre l'Obj-C sur mon propre. À ce point, je comprends la plupart de ce qui se passe, mais il y a évidemment quelque chose qui me manque ici.
Le consensus suggère que ce que j'ai dans le code est correct, bien que personne ne semble être en mesure de me dire pourquoi le point de vue n'est pas établi, lorsqu'il est appelé à partir de mon contrôleur awakeFromNib méthode. Je vais réfléchir à ce problème résolu, étant donné que je vais apprendre sur la vue des contrôleurs de toute façon.

OriginalL'auteur subject_x | 2011-01-27