Pregunta

Estoy siguiendo cursos de desarrollo para iPhone de Stanford Open-University, y he estado bloqueado durante 2 días en task3 , tal vez alguien me puede ayudar aquí?

Las tareas son:

  1. Cree una subclase de UIView personalizada que muestre su objeto PolygonShape
  2. Otorgue acceso a su clase de vista al objeto PolygonShape para que pueda recuperar los detalles del polígono según sea necesario

El problema es: ¿cómo le doy acceso a mi clase de vista al objeto de polígono definido en mi controlador?

Aquí están mis implementaciones si pueden ayudar:

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
¿Fue útil?

Solución

Y después de que lo descubras, podría no estar de más retocar algunos conceptos básicos del objetivo c:

http://www.cocoacast.com/?q=node/103

Otros consejos

Encontré mi propia respuesta, me perdí un método setPolygon en mi CustomView para vincular ambos ... estúpido ...

en CustomView.h :

#import "PolygonShape.h"

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

@property (readwrite, assign) PolygonShape *polygon;

- (NSArray *)pointsForPolygonInRect:(CGRect)rect numberOfSides:(int)numberOfSides;

@end

en CustomView.m:

@implementation CustomView

@synthesize polygon;

...

@end

en 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]);
} 

Acabo de terminar la tarea 3 anoche. Resolví esta conexión todo en Interface Builder. Primero creé una salida en el "PolygonView" UIView subclase para PolygonShape y luego lo conectó a la instancia del modelo Polygon. Por lo que he leído en el Grupo de Google y en varios otros sitios, no creo que haya una manera correcta de conectar esta UIView al modelo y al controlador. Pero funcionó, creo que no hay nada de malo en que View conozca el modelo.

Entonces, ¿por qué no los declaras como propiedades de la clase?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top