Passare l'oggetto dal controller a una vista
-
19-08-2019 - |
Domanda
Sto seguendo Corsi di sviluppo di iPhone da Stanford Open-University, e sono stato bloccato per 2 giorni su compito3 , forse qualcuno mi può aiutare qui?
I compiti sono:
- Crea una sottoclasse UIView personalizzata che visualizzerà il tuo oggetto PolygonShape
- Consenti alla tua classe di visualizzazione di accedere all'oggetto PolygonShape in modo che possa recuperare i dettagli del poligono secondo necessità
Il problema è: come posso consentire alla mia classe di visualizzazione di accedere all'oggetto poligono definito nel mio controller?
Ecco le mie implementazioni se può aiutare:
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
Soluzione
E dopo averlo capito, potrebbe non far male ritoccare alcune nozioni di base sull'obiettivo c:
Altri suggerimenti
Trovato la mia risposta, ho perso un metodo setPolygon nel mio CustomView per collegare entrambi ... stupido ...
in CustomView.h :
#import "PolygonShape.h"
@interface CustomView : UIView {
IBOutlet PolygonShape *polygon;
}
@property (readwrite, assign) PolygonShape *polygon;
- (NSArray *)pointsForPolygonInRect:(CGRect)rect numberOfSides:(int)numberOfSides;
@end
in CustomView.m:
@implementation CustomView
@synthesize polygon;
...
@end
in 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]);
}
Ho appena finito l'assegnazione 3 ieri sera. Ho risolto questa connessione in Interface Builder. Per prima cosa ho creato uno sbocco sul "PolygonView" Sottoclasse UIView per PolygonShape e quindi connessa all'istanza del modello Polygon. Da quello che ho letto nel Gruppo Google e su vari altri siti, non penso che ci sia un modo giusto per collegare questo UIView al modello e al controller. Ma ha funzionato penso che non ci sia nulla di sbagliato nel View che conosce il modello.
Quindi perché non le stai dichiarando come proprietà della classe?