2013-06-03 101 views
2

所以我在我的導航控制器中有一個設置欄按鈕項,當它從主視圖控制器按下時,會在主控vc上打開一個設置vc透明視圖,所以主控vc在設置vc後面仍然可見。我希望導航欄仍顯示,所以在「HomeViewController.h」我有以下代碼:如何刪除我添加到navigationcontroller視圖的視圖?

-(IBAction)settingsButtonPressed:(id)sender{ 
    SettingsViewController *settings = [[SettingsViewController alloc]init]; 
    [self.navigationController.view addSubview:settings.view]; 
} 

當我想刪除的設置來看,在「SettingsViewController」我試圖做:

-(IBAction)exitSettings:(id)sender{ 
    [self.navigationController.view removeFromSuperview]; 
} 

但我做到這一點,嘗試運行該程序時,程序停止,並在調試區,它只是說

Thread 1: EXC_BAD_ACCESS (code = 2, address=0xb0000008) 
(lldb) 

什麼我做錯了,我怎麼能解決這個問題???發生的因爲這段代碼

+0

你想刪除導航控制器 – Jitendra

+0

你試圖從層次結構中刪除navigationController的視圖,你可能想''self.view removeFromSuperview];' – Alladinian

+0

我不想刪除導航控制器,我想刪除設置視圖並再次使用導航控制器顯示主視圖。我嘗試從self.view中調用removeFromSuperview,但同樣的事情發生,但地址= 0xf –

回答

6

這裏碰撞:

[self.navigationController.view removeFromSuperview]; 

您正在試圖刪除navigationController視圖不設置視圖。

當您添加SettingsViewController添加tag到它:

-(IBAction)settingsButtonPressed:(id)sender 
{ 
    SettingsViewController *settings = [[SettingsViewController alloc]init]; 
    settings.view.tag = 7; 
    [self.navigationController.view addSubview:settings.view]; 
} 

,並使用此tag從navigationcontroller刪除視圖:

-(IBAction)exitSettings:(id)sender 
{ 
    [[self.navigationController.view viewWithTag:7] removeFromSuperview]; 
} 
+0

我已經看到,我應該嘗試添加一個標籤到視圖,但我有' - (IBAction)exitSettings:(id)發件人在SettingsViewController.h和' - (IBAction)settingsButtonPressed:(id)sender'在HomeViewController.h中,所以我看不到標籤會如何影響調用退出按鈕,我試着給SettingsViewController.xib文件添加一個標籤,但是我得到了同樣的錯誤 –

+0

你可以請嘗試我的答案?做確切的步驟。不需要向xib添加標籤。它會工作 –

+0

我試過了,我仍然得到相同的錯誤 –

0
for (UIView *view in self.navigationController.view.subviews) 
{ 
    if ([view isKindOfClass:[SettingsViewController class]]) 
    { 
     [view removeFromSuperview]; 
    } 
} 
+0

'UIView'永遠不會是'SettingsViewController'的(子)類... – Alladinian

-3
-(IBAction)exitSettings:(id)sender 
{ 
     [vc dismissModalViewControllerAnimated:YES]; 
} 

VC是你的ViewController對象。

試試這個。

+1

他並沒有首先以模態方式呈現控制器。所以這不起作用... – Alladinian

相關問題