2011-01-22 114 views
0

在我的應用我需要顯示和隱藏基於一些用戶操作,我已經做了以下的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]; 
} 
} 

在初始化應用我打電話ShowSubView:0和它的做工精細, 而是取決於一些用戶操作,我會打電話給ShowSubView:1,並沒有什麼顯示& EXEC_BAD_ACCESS我可以在GDB看到
請指引我,做我需要做更多的事情,以顯示視圖

感謝

+0

嘗試不要在以後調用setNeedsDisplay。此外,您應該使用YES和NO,而不是TRUE和FALSE。這是慣例,但它不應該是真的。 – Maz 2011-01-22 17:02:52

回答

1

當你的應用程序崩潰,看一下Debugger窗口 - 它會告訴你你的應用在崩潰時做了什麼。

您可能會想要停止調試器並在樂器的殭屍工具下重新運行您的應用程序。當崩潰是因爲你發送了一個死對象(這可能是可可中80%的時間)時,殭屍工具會告訴你那個對象是什麼,什麼是它。