0

プロパティ UIView *view を持つスーパークラス O があります。

@interface O : NSObject
{
    UIView *view;
}

@property (nonatomic, weak) UIView *view;

@end

UIView サブクラス:

@interface myView : UIView

@property (nonatomic, weak) UIColor color;

次に、初期化に次の内容を持つ O のサブクラスがあります。

view = [[myView alloc] init];
view.color = [UIColor redColor];

color は、一部のカスタム描画コードで使用される myView のプロパティです。

UIView にはプロパティ color がないため、これによりコンパイラがクラッシュします。setColor メソッドを使用して値を設定することもできますが、ドット構文を介してプロパティにアクセスできると便利です。

これを行う方法はありますか?

4

4 に答える 4

1

編集:

特定のケースでは、.h ファイルの代わりにviewasを宣言する必要があります。その後、カスタム カラー プロパティにアクセスできます。myView *viewUIView

于 2012-08-01T05:54:47.863 に答える
0

これを試して:

self.view.backgroundColor=[UIColor redColor];
于 2012-08-01T05:51:55.587 に答える
0

Oを使用して宣言できますmyView

おー:

@class myView;

@interface O: NSObject {
    myView *view;
}
....
@end

オム:

#import "myView.h"

....

この場合、@class myViewインポートする必要がないことを宣言することmyView.hで、O.hどちらが良いかを判断できます。myViewどこかに別の場所があることをコンパイラに伝えるだけです。myViewこれで、インスタンスのカスタム プロパティを使用できるようになりました。

O.viewそれが常にタイプであると確信している場合は、次のmyViewようにセッターを呼び出すことができます。

[view setColor:theColor];

しかし、私はこれをお勧めしません. ifviewが他のUIViewクラスのインスタンスになると、セレクターがないというエラーが発生しますsetColor.

view適切なクラスでプロパティを宣言することを強くお勧めします。

于 2012-08-01T06:45:23.043 に答える
0

どのように使用できますsetColor:か? のような方法は見当たりませんUIView。プロパティを使用backgroundColorして、ドット表記とメソッド表記の両方でアクセスできます。

ドットとメソッドの表記に関しては、すべてのプロパティに対して a.propertyNameに割り当てることは、 を呼び出すことと同じsetPropertyName:です。setSomethingが明示的に宣言されたメソッドではない場合にのみドット表記を呼び出すことはできません@propertyが、Apple のフレームワークではそれが可能だとは思いません。

于 2012-08-01T05:53:10.570 に答える