2012-04-17 11 views
0

からサブビューを取得、私はこのように設定私のメインウィンドウの内容を眺めることができます。今私は、私は次のようでしたそれまでのすべてが、私は私のfilterViewサブクラスからメソッドを呼び出したい今を除いて正常に動作しますは、別のサブビュー

filterView = [[FilterView alloc]initWithFrame:NSMakeRect(100, 100, 500, 500)]; 
    [newContentView addSubview:filterView]; 
    [filterView release]; 

をサブビューを追加したいと私はこのようにそれを取得したいが、それ文句を言わない仕事。

FilterView *filter = [[NSApp delegate] contentView]; 

私はaddSubviewに

[newContentView addSubview:filterView positioned:NSWindowAbove relativeTo:nil]; 

それdidntの作業を次の行を追加しようとしたのでcontentViewを使用することによって、それが唯一の「ウィンドウ階層の最上位にアクセスNSViewのオブジェクトを返す」というドキュメントを読み込みます私は何をする必要があるかのいずれかのアイデアですか?ありがとう!

+0

私は通常、ちょうど私が後でアクセスしたいビューを追跡するためのプロパティを追加します。 – mydogisbox

+0

私は '@property(nonatomic、strong)FilterView * filterView;を実行しましたが、そのメソッドにアクセスするには別のクラスのプロパティにどのようにアクセスしますか? –

+0

それがあなたのアプリケーションデリゲートの一部であると仮定すれば、あなたは 'MyAppDelegateClass * appDelegate = [[UIApplication sharedApplication] delegate];'のようなアプリケーションデリゲートを取得し、そのプロパティを取得します。 – mydogisbox

答えて

2

コンテンツビューで本当にあなたが使用する必要がありますのでごCutoutViewクラス:

FilterView *filterView = [[[[[NSApp delegate] window] contentView] subviews] objectAtIndex:0]; 

しかし、2クリーナーの方法は次のとおりです。

1)使用IBOutletsは、あなたの意見を追跡し、IBを経由して、それらを割り当てるには。 2)タグを使用します。

filterView.tag = 101; 

は、使用:

FilterView* filterView = [[[NSApp delegate] contentView] viewWithTag:101]; 
+0

タグを使用しようとすると、filterView.tag = 101;というように設定するとすぐに「セッターなし」というメッセージが表示されますメソッド 'setTag'をプロパティに代入する '何を追加する必要がありますか?ありがとう! –

+0

私は謝罪する必要があります - NSViewsにはタグがないようです。 iOS上のUIViewにはそれらがあります。 Macのプログラマはそれを確認できますか? – Cthutu

+0

docsは 'サブクラスが個々のタグを提供するためにこのメソッドをオーバーライドし、おそらくストレージとsetTag:メソッド(NSViewは定義していません)を追加することができます。 ' –

0

ContentViewは、アプリケーションデリゲートではないので、アプリケーションデリゲートではIBOutletが「ウィンドウ」のウィンドウを持っている場合、次のように使用する必要があります。FilterView * filter = [[[NSApp delegate] window ] contentView];

+0

私はウィンドウを追加] contentView]しかし、私は私のFilterViewからメソッドを取得しようとするとクラッシュし、 ' - [CutoutView myMethod]:認識できないセレクターがインスタンス0x1050415a0に送られました ' FilterView "と呼ばれるサブクラスではない –

関連する問題