【问题标题】:Passing object from controller to a view将对象从控制器传递到视图
【发布时间】:2008-12-04 03:54:48
【问题描述】:

我正在关注斯坦福开放大学的 iPhone dev courses,我在 assignment3 上被屏蔽了 2 天,也许有人可以在这里帮助我?

任务是:

  1. 创建将显示您的 PolygonShape 对象的自定义 UIView 子类
  2. 为您的视图类提供对 PolygonShape 对象的访问权限,以便它可以根据需要检索多边形的详细信息

问题是:如何让视图类访问控制器中定义的多边形对象?

如果有帮助,这是我的实现:

CustomView.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

【问题讨论】:

    标签: iphone objective-c cocoa-touch cs193p


    【解决方案1】:

    在你弄明白之后,再补充一些 Objective-c 的基础知识可能不会有什么坏处:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我昨晚刚完成作业 3。我在 Interface Builder 中解决了这个连接。首先,我在 PolygonShape 的“PolygonView”UIView 子类上创建了一个插座,然后将其连接到 Polygon 模型的实例。根据我在 Google Group 和其他各种网站上阅读的内容,我认为没有一种正确的方法可以将此 UIView 连接到模型和控制器。但它起作用了,我认为 View 了解模型并没有错。

        【讨论】:

          【解决方案4】:

          那么你为什么不将它们声明为类的属性呢?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-03-31
            • 1970-01-01
            • 1970-01-01
            • 2019-07-06
            • 2018-10-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多