2011-08-11 47 views
0

我的項目中有多個視圖控制器。第一個視圖控制器在應用程序啓動時被調用並顯示登錄屏幕。當憑據正確並且用戶登錄時,模態視圖被解除。而另一個視圖控制器是這樣實例化的:解僱時從視圖控制器中刪除所有設置

[self dismissModalViewControllerAnimated:NO]; 
Form *formcontroller = [[Form alloc] init]; 
[self presentModalViewController:formcontroller animated:YES]; 

當我的其他viewcontroller被提出時,舊的消失。在我secondviewcontroller頂部我有一個註銷按鈕,至極不完全一樣的,所以它駁斥當前視圖 - 控制和調用另一個像這樣:

-(IBAction)logOut:(id)sender{ 
    [self dissmissModalViewControllerAnimated:NO]; 
} 

在我viewdiddisappear:

-(void)viewDidDisappear:(BOOL)animated{ 
    Postform3ViewController *logincontroller = [[Postform3ViewController alloc] init]; 
    [self presentModalViewController:logincontroller animated:YES]; 
} 

的問題是: 當我推註銷按鈕,並且我返回到登錄控制器。憑證仍然填充。所以我的結論是,第一個viewcontroller停留在內存中。我究竟做錯了什麼?

編輯:

我找到了自己的解決方案。我正在分析我的應用程序,並且找不到任何內存泄漏。所以我決定一切都被釋放。然後我認爲我能夠把所有東西都設置爲空。我這樣做,在viewDidAppear方法是這樣的:

-(void)viewDidAppear:(BOOL)animated { 
    gebruikersnaam.text = @""; 
    wachtwoord.text = @""; 
    [self.activeTextField resignFirstResponder]; 
    [super viewDidAppear:animated]; 
} 

回答

0

那麼首先,當您使用presentModalViewControllerpushViewController的VC被保留,所以你應該總是釋放你提出後或推它。

其次,在第三個代碼塊中,它看起來像你正在創建一個logincontroller,但呈現一個formcontroller。也許你想上展示您剛剛創建的VC:

[self presentModalViewController:logincontroller animated:animated];

編輯0:對於你的代碼,在第一塊,發佈這樣的:

Form *formcontroller = [[Form alloc] init];

[self presentModalViewController:formcontroller animated:YES];

...

[self dismissModalViewController:formcontroller animated:YES];

[formcontroller release];

+0

這是正確的我正在第三塊創建一個登錄控制器。我的第一個控制器就是PostForm3ViewController。 我試圖釋放控制器,但它沒有幫助。 –

+0

沒錯,但是你正在推動控制器「formcontroller」而不是「logincontroller」,這就是你剛剛創建的。 –

+0

啊,我是多麼的愚蠢......我輸入了它。在我的代碼中,它運行良好。所以這留下了第一個問題。我應該在哪裏發佈控制器,以及如何?我也編輯了我的代碼。 –

相關問題