Передача объекта из контроллера в представление - PullRequest
2 голосов
/ 04 декабря 2008

Я слежу за курсами для разработчиков iPhone от Стэнфордского открытого университета, и меня заблокировали на 2 дня по заданию3 , может быть, кто-то может мне здесь помочь?

Задачи:

  1. Создайте пользовательский подкласс UIView, который будет отображать ваш объект PolygonShape
  2. Предоставьте вашему классу представления доступ к объекту PolygonShape, чтобы он мог при необходимости получать сведения о многоугольнике

Проблема в том, что: как мне предоставить классу представления доступ к объекту многоугольника, определенному в моем контроллере?

Вот мои реализации, если это может помочь:

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

Ответы [ 4 ]

2 голосов
/ 04 декабря 2008

И после того, как вы это поймете, может быть не повредит подправить некоторые цели из c:

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

1 голос
/ 04 декабря 2008

Нашел свой ответ, я пропустил метод setPolygon в своем CustomView, чтобы связать оба ... глупо ...

в CustomView.h :

#import "PolygonShape.h"

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

@property (readwrite, assign) PolygonShape *polygon;

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

@end

в 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]);
} 
0 голосов
/ 11 мая 2009

Я только что закончил задание 3 прошлой ночью. Я решил эту связь все в Интерфейсном Разработчике. Сначала я создал выход для подкласса UIView PolygonView для PolygonShape, а затем подключил его к экземпляру модели Polygon. Из того, что я прочитал в Google Group и на других сайтах, я не думаю, что есть один правильный способ соединить этот UIView с моделью и контроллером. Но это сработало, я думаю, нет ничего плохого в том, что View знает о модели.

0 голосов
/ 04 декабря 2008

Так почему же вы не объявляете их как свойства класса?

...