我的主窗口的内容视图设置如下:
newContentView = [[CutoutView alloc]initWithFrame:window.frame];
[window setContentView:newContentView];
[newContentView release];
其中CutoutView是我的子类的名称。现在我想添加一个子视图,所以我做了以下,
filterView = [[FilterView alloc]initWithFrame:NSMakeRect(100, 100, 500, 500)];
[newContentView addSubview:filterView];
[filterView release];
一切正常,除了现在我想从我的filterView子类调用方法,我想得到它,但它不会工作。
FilterView *filter = [[NSApp delegate] contentView];
我在文档中读到,通过使用contentView,它只返回窗口层次结构中最高可访问的NSView对象“所以我尝试将以下内容添加到addSubview
[newContentView addSubview:filterView positioned:NSWindowAbove relativeTo:nil];
但是对于我需要做什么的任何想法都没有用?谢谢!
答案 0 :(得分:2)
内容视图实际上是你的CutoutView类,所以你应该使用:
FilterView *filterView = [[[[[NSApp delegate] window] contentView] subviews] objectAtIndex:0];
但两种更清洁的方式是:
1)使用IBOutlets跟踪您的观点并通过IB分配它们。 2)使用标签:
filterView.tag = 101;
然后使用:
FilterView* filterView = [[[NSApp delegate] contentView] viewWithTag:101];
答案 1 :(得分:0)
ContentView是一个窗口的方法而不是app委托,所以如果你的应用程序委托中有一个IBOutlet是“窗口”的窗口,那么你需要使用:FilterView * filter = [[[NSApp delegate] window]内容查看];