2

私はStanford Open-University のiPhone 開発コースをフォローしていますが、課題3 で 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

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

4 に答える 4

2

そして、あなたがそれを理解した後、いくつかのObjective-Cの基本に手を加えることは害にならないかもしれません:

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

于 2008-12-04T04:23:59.783 に答える
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]);
} 
于 2008-12-04T04:21:50.880 に答える
0

昨夜課題3を終えたところです。この接続はすべてInterface Builderで解決しました。まず、PolygonShape の "PolygonView" UIView サブクラスにアウトレットを作成し、それを Polygon モデルのインスタンスに接続しました。Google グループや他のさまざまなサイトで読んだことから、この UIView をモデルとコントローラーに接続する正しい方法は 1 つではないと思います。しかし、それはうまくいきました。ビューがモデルについて知っていることに問題はないと思います。

于 2009-05-11T17:17:36.053 に答える
-1

では、なぜそれらをクラスのプロパティとして宣言しないのでしょうか?

于 2008-12-04T16:01:33.607 に答える