Передача объекта от контроллера к представлению

StackOverflow https://stackoverflow.com/questions/339559

Вопрос

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

Задачи заключаются в следующем:

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

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

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

Пользовательский просмотр.h:

#import "PolygonShape.h"

@interface CustomView : UIView {
    IBOutlet PolygonShape *polygon;
}
- (NSArray *)pointsForPolygonInRect:(CGRect)rect numberOfSides:(int)numberOfSides;

@end

Контроллер.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
Это было полезно?

Решение

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

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

Другие советы

Нашел свой собственный ответ, я пропустил метод setPolygon в моем 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

в Контроллер.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]);
} 

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top