将对象从控制器传递到视图

时间:2008-12-04 03:54:48

标签: iphone objective-c cocoa-touch cs193p

我正在关注斯坦福大学开放大学的iPhone dev courses,我在assignment3被封锁了两天,也许有人可以帮助我吗?

任务是:

  1. 创建一个显示PolygonShape对象的自定义UIView子类
  2. 为您的视图类提供对PolygonShape对象的访问权限,以便它可以根据需要检索多边形的详细信息
  3. 问题是:如何让我的视图类访问控制器中定义的多边形对象?

    这是我的实现,如果它可以帮助:

    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 个答案:

答案 0 :(得分:2)

在你搞清楚之后,谈论一些客观的基础知识可能没有什么坏处:

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

答案 1 :(得分:1)

找到我自己的答案,我在CustomView中错过了一个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
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]);
} 

答案 2 :(得分:0)

昨晚我刚刚完成了第3次任命。我在Interface Builder中解决了这个问题。首先,我在PolygonShape的“PolygonView”UIView子类上创建了一个插座,然后将其连接到Polygon模型的实例。根据我在谷歌集团和其他各种网站上所读到的内容,我认为没有一种正确的方法可以将这个UIView连接到模型和控制器。但它确实有效,我认为View了解模型并没有错。

答案 3 :(得分:-1)

那你为什么不把它们宣布为班级的属性?