NSView显示并隐藏SubView

时间:2011-01-22 16:46:51

标签: objective-c cocoa nsview

在我的应用程序中,我需要根据一些用户操作显示和隐藏,我已经完成了以下操作

在界面定义中,添加了类似的视图

@interface MyWnd : NSWindowController {

    MyCustomView1 *pCtmView1; 

    MyCustomView2 *pCtmView2;
}

在源文件中有以下相关方法

-(void)CreateSubViews{

    NSRect subViewRect = [self GetSubViewRect];

    pCtmView1 = [[ MyCustomView1 alloc]initWithFrame:subViewRect]

    pCtmView2 = [[ MyCustomView2 alloc]initWithFrame:subViewRect]

    initially both view will be hidden 

    [pCtmView1 setHidden:TRUE];
    [pCtmView2 setHidden:TRUE];

    [[self window] view addSubView:pCtmView1];
    [[self window] view addSubView:pCtmView2];
}

-(void)ShowSubView:(int)viewId{
  if(viewId == 0 ){
    [pCtmView1 setHidden:FALSE];
    [pCtmView1 setNeedDisplay:YES];
 }
 if(viewId == 1 ){
    [pCtmView2 setHidden:FALSE];
    [pCtmView2 setNeedDisplay:YES];
 }
}

在Init应用程序中我正在调用ShowSubView:0并且它正常工作,   但是依赖于一些用户操作,我将调用ShowSubView:1并且不显示任何内容。   我可以在gdb中看到EXEC_BAD_ACCESS   请指导我,我是否需要做更多的事情才能显示视图

谢谢

1 个答案:

答案 0 :(得分:1)

当你的应用程序崩溃时,请查看调试器窗口 - 它会告诉你应用程序在崩溃时正在做什么。

您可能希望停止调试器并在Instruments的Zombies工具下重新运行您的应用程序。当崩溃是因为你发送了一个死对象(这可能是80%的时间在Cocoa中的原因),Zombies工具会告诉你是什么对象以及杀死它的对象。