Passer un objet du contrôleur à une vue
-
19-08-2019 - |
Question
Je suis cours de développement pour iPhone de Stanford. Open-University et je suis bloqué depuis 2 jours sur assessment3 , peut-être quelqu'un peut m'aider ici?
Les tâches sont les suivantes:
- Créez une sous-classe UIView personnalisée qui affichera votre objet PolygonShape
- Donnez à votre classe de vue l'accès à l'objet PolygonShape afin qu'il puisse récupérer les détails du polygone selon les besoins
Le problème est le suivant: comment donner à ma classe de vue l'accès à l'objet polygone défini dans mon contrôleur?
Voici mes implémentations si cela peut aider:
CustomView.h:
#import "PolygonShape.h"
@interface CustomView : UIView {
IBOutlet PolygonShape *polygon;
}
- (NSArray *)pointsForPolygonInRect:(CGRect)rect numberOfSides:(int)numberOfSides;
@end
Controller.h:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "PolygonShape.h"
#import "PolygonView.h"
@interface Controller : NSObject {
IBOutlet UIButton *decreaseButton;
IBOutlet UIButton *increaseButton;
IBOutlet UILabel *numberOfSidesLabel;
IBOutlet PolygonShape *polygon;
IBOutlet PolygonView *polygonView;
}
- (IBAction)decrease;
- (IBAction)increase;
- (void)awakeFromNib;
- (void)updateInterface;
@end
La solution
Et une fois que vous avez compris, il n’est peut-être pas mal de retoucher sur quelques notions de base de l’objectif c:
Autres conseils
J'ai trouvé ma propre réponse, j'ai raté une méthode setPolygon dans mon CustomView pour lier les deux ... stupide ...
dans CustomView.h :
#import "PolygonShape.h"
@interface CustomView : UIView {
IBOutlet PolygonShape *polygon;
}
@property (readwrite, assign) PolygonShape *polygon;
- (NSArray *)pointsForPolygonInRect:(CGRect)rect numberOfSides:(int)numberOfSides;
@end
dans CustomView.m:
@implementation CustomView
@synthesize polygon;
...
@end
dans Controller.m :
- (void)awakeFromNib {
// configure your polygon here
polygon = [[PolygonShape alloc] initWithNumberOfSides:numberOfSidesLabel.text.integerValue minimumNumberOfSides:3 maximumNumberOfSides:12];
[polygonView setPolygon:polygon];
NSLog (@"My polygon: %@", [polygon description]);
}
Je viens de terminer l’affectation 3 la nuit dernière. J'ai résolu cette connexion tout dans Interface Builder. J'ai d'abord créé un point de vente sur le fichier "PolygonView". Sous-classe UIView pour PolygonShape, puis connectée à l’instance du modèle Polygon. D'après ce que j'ai lu dans le groupe Google et sur divers autres sites, je ne pense pas qu'il existe un bon moyen de connecter cette UIView au modèle et au contrôleur. Mais cela a fonctionné, je pense qu’il n’ya rien de mal à ce que View ait connaissance du modèle.
Alors, pourquoi ne les déclarez-vous pas comme propriétés de la classe?