3

メインUIViewControllerからUIViewサブクラスにUIColor変数を設定しようとしています。UIViewControllerで要求された色を取得するためのプロパティがあり、UIViewで受け取る色のプロパティがあります。ただし、ドットメソッドを使用して取得した色を適用すると、「タイプ'UIView*'のオブジェクトにプロパティ"brushColor"が見つかりません」というエラーが発生します。

//Controller.h

@interface ViewController : UIViewController {
    UIColor *colorPicked;
    UIView *drawScreen;
}
@property (nonatomic, strong) UIView *drawScreen;

@property (nonatomic, strong) UIColor *colorPicked;

//Controller.m

@implementation ViewController

@synthesize drawScreen;
@synthesize colorPicked;

- (void)viewDidLoad{   
    self.drawScreen = [[DrawingView alloc] initWithFrame:CGRectMake(0, 44, 1024, 724)];
    drawScreen.backgroundColor = [UIColor clearColor];

    drawScreen.brushColor = self.colorPicked;   //This line errors stating the property is not available on type (UIView *)

    [self.view addSubview:drawScreen];


    [super viewDidLoad];
}

//View.h

@interface DrawingView : UIView{

    UIColor *brushColor;

    UIBezierPath *myPath;
}


@property (nonatomic, retain) UIColor *brushColor;

@end

//View.m

@implementation DrawingView

@synthesize brushColor;

- (void)drawRect:(CGRect)rect{

    myPath = [[UIBezierPath alloc] init];

    [brushColor setStroke];

    [myPath strokeWithBlendMode:kCGBlendModeNormal alpha:1.0];

}

@end
4

1 に答える 1

5

drawScreenとして宣言した場合UIViewは、.h の宣言を次のように変更します。

@property (nonatomic, strong) DrawingView *drawScreen;

一致するようにivar宣言を変更します(または、とにかくプロパティを使用しているため、完全に削除します)

于 2012-08-05T21:11:38.180 に答える