2011-08-11 6 views
0

私のプロジェクトに複数のviewcontrollerがあります。アプリケーションが起動し、ログイン画面を表示すると、最初のviewcontrollerが呼び出されます。資格情報が正しく、ユーザーがログインすると、モーダルビューは終了します。別のviewcontrollerが次のようにインスタンス化されます:閉じるときにviewcontrollerからすべての設定を削除します。

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

私の他のビューコントローラが表示されると、古いものが消えます。私secondviewcontrollerの上に、私はウィッヒが正確に同じことを、ログアウトボタンを得たので、それは現在のViewControllerを閉じると、このように別のものを呼び出します。

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

そして、私のviewdiddisappear中:

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

問題は: 私がログアウトボタンを押すと、私はlogincontrollerに戻ります。資格情報はまだ入力されています。私の結論は、最初のビューコントローラはメモリ内にとどまることです。何が間違っているのですか?

編集:

私は自分の解決策を見つけました。私は自分のアプリケーションをプロファイリングしていましたが、メモリリークは見つかりませんでした。だから、私はすべてが解放されたと決めました。それから、私はすべてを空にすることができたと思った。すべての

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

答えて

0

まあ最初のあなたは、あなたが提示したり、それを押した後、あなたは常にそれを解放する必要がありますので、VCが保持されpresentModalViewControllerpushViewControllerを使用している場合:私はこのようなviewDidAppear方法であることでした。

2番目のコードブロックでは、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

それは正しいです私は3番目のブロックにlogincontrollerを作成しています。私の最初のコントローラーはPostForm3ViewControllerと呼ばれています。 コントローラをリリースしようとしましたが、それは役に立たなかった。 –

+0

そうですが、作成したばかりの「logincontroller」ではなく、コントローラ「formcontroller」を押しています。 –

+0

ああ私のおかしい。私はそれを打ちました。私のコードでは、うまくいきます。それで最初の質問が残されます。どこでコントローラをリリースすればいいのですか?私も自分のコードを編集しました。 –

関連する問題