2

ログイン画面である最初のビューがあります。ユーザーがログインした後、ビューを 2 番目のビューにプッシュするボタンがあります。私の問題は、最初のビューにプッシュバックするボタンを押すと、viewDidLoad メソッドが呼び出され、アプリをビルドしたかのようにビューが実行されることです。ログインしたユーザーに応じて設定された他のラベルがあるため、プッシュされる前の最初のビューの状態を保持したいと考えています。

これは、2 番目のビューにプッシュするために使用する方法です。

-(IBAction) secondView
{
    _secondView = [[SecondViewController alloc]initWithNibName:nil bundle:nil];
    [self presentModalViewController:_secondView animated:YES];
    [_secondView release];
}

最初のビューにプッシュバックする方法:

-(IBAction) back {
    _firstView = [[FirstViewController alloc]initWithNibName:nil bundle:nil];
    [self presentModalViewController:_firstView animated:YES];
    [_firstView release];
}

私はナビゲーション コントローラーを使用していないので、最初のビューを 2 番目のビューにプッシュしたときの状態に戻す方法はありますか? 前もって感謝します。

4

4 に答える 4

3

FirstViewController にプッシュ バックする場合は、back メソッドでこのコードを使用します。

[self dismissModalViewControllerAnimated:YES];
于 2011-06-13T04:33:08.940 に答える
3

firstViewController に戻るには、それをスタックにプッシュするのではなく (これは になります_firstView _secondView _firstView)、secondViewController を次のようにポップします。

-(IBAction) back {
    [self dismissModalViewControllerAnimated:YES];
}

あなたがしていることの問題は現在のメソッドを使用して「戻る」ときに新しい firstViewController を作成していることです(allocこれinitが手がかりです)。実際には、firstViewController の上部から secondViewController をポップしたいだけです。これは上記の方法で行うことができます。

于 2011-06-13T04:26:22.937 に答える
3

UIVIewController最初のビューを別のモーダル ビューとして表示するのではなく、2 番目のビューを閉じる必要があります。

backメソッドを次のように置き換える必要があります。

-(IBAction)back:{
    [[self parentViewController] dismissModalViewControllerAnimated:YES];
}

これにより、最初のビューに戻り、(おそらく) 2 番目のビューの割り当てが解除されますUIViewController

お役に立てば幸いです。

于 2011-06-13T04:27:25.323 に答える
0

戻ったら、FirstViewController のインスタンスを作成して提示する代わりに、SecondViewController を閉じます。

于 2011-06-13T04:28:31.383 に答える