0

AppDelegate に作成したウィンドウがあり、CutoutView からメソッドを取得するなど、newContentView でアクションを実行するときに、コンテンツ ビューを NSView サブクラス「CutoutView」に設定します。

// Configure contentView in AppDelegate
    newContentView = [[CutoutView alloc]initWithFrame:window.frame];
    [window setContentView:newContentView];

今、MoveFilter と呼ばれる別の NSView サブクラスがあり、CutoutView からもメソッドを呼び出せるようにしたいと考えています。問題は、CutoutView メソッドを再度割り当てて初期化する必要があることです。メソッドを呼び出すと、CutoutView が既に割り当てられ初期化されているため、何も表示されません。

 // in MoveFilter
 cutOutView = [[CutoutView alloc]init];
 [cutOutView someMethod];

MoveFilter に何を追加する必要がありますか、または newContentView と同じように表示されるメソッドを呼び出すことができるようにするには、何を確認できますか? 申し訳ありませんが、私はこれが初めてです、ありがとう!

4

1 に答える 1

2

CutoutViewアプリ デリゲートから既存のものを取得します。

CutoutView * cv = [[NSApp delegate] newContentView];

(このためのプロパティがあると仮定すると、それを ivar に入れているように見えます。)

または窓から:

// in MoveFilter
CutoutView * cv = [[self window] contentView];

( とが同じウィンドウにあるMoveFilterと仮定します。)CutoutView

または、これらの仮定がどちらも当てはまらない場合は、2 つの手順を組み合わせて、アプリ デリゲートのウィンドウのコンテンツ ビューを取得できます。これは練習問題として残しておきます。

于 2012-04-14T18:09:48.900 に答える