0

別のウィンドウで既に初期化されている NSView を呼び出すにはどうすればよいですか?

newContentView = [[CutoutView alloc]initWithFrame:window.frame]; //make a new CutoutView
    [window setContentView:newContentView]; //set it as the contentview of our window
    [newContentView release];

newContentView は NSView サブクラスであり、ウィンドウの contentView として設定されています。NSView サブクラス「CutoutView」では、単純な四角形を描画しています。

別の NSView サブクラスでは、newContentView または単に CutoutView に再描画する必要があることを伝えたいのです[setNeedsDisplay:YES]が、これを行う唯一の方法は別のものを作成する[[CutoutView alloc] init];ことです。やっているとのことですが、CutOutViewが既に初期化されているためか、表示されていません。実際に表示されるように、すでに初期化されている場所からnewContentViewまたは単にCutoutViewにアクセスするにはどうすればよいですか。ありがとう!

4

2 に答える 2

0

コードがどのように設定されているかは完全にはわかりませんが、プロパティを使用してオブジェクトを参照する必要があります。以下を .h ファイルに追加します。

@property (nonatomic, strong) CutoutView * newContentView;

これで、.m ファイルに追加することで、self.newContentView を使用してオブジェクトにアクセスできます。

@synthesize newContentView = _newContentView;
newContentView = [[CutoutView alloc]initWithFrame:window.frame]; //make a new CutoutView
self.newContentView = newContentView;
[window setContentView:self.newContentView]; //set it as the contentview of our window
[newContentView release];
于 2012-04-15T04:20:27.793 に答える