-1

2 つのビューコントローラー、つまり vc1 と vc2 があるとします。各VCにはボタンがあり、押すと背景がデフォルトの白から黒に変わり、次のボタンがあります。

そのため、vc1 の背景が黒くなり、次のボタンをクリックすると、問題なく vc2 がプッシュされます。

- (IBAction)nextVC:(id)sender {

    UIViewController *otherView = [self.storyboard instantiateViewControllerWithIdentifier:@"vc2"] ;
    [self presentViewController:otherView animated:YES completion:NULL] ;
}

vc2 でも同じことをすると、vc2 の背景が黒くなります。次に、vc2 を閉じて、vc1 に戻ります。vc1 の背景は黒のままです。

[self dismissViewControllerAnimated:YES completion:nil] ;

問題は、vc1 で次のボタンを押すと、vc2 の背景色が黒のままではなく、デフォルトの白になることです。破棄した vc2 のステータスを再開する方法はありますか? データを保存したり、viewWillApperなどに何も設定したりしません。

簡単に言えば、閉じられたビューを再開するメソッドを求めていますが、新しいビュー (vc2) をプッシュしていません。

助けてくれてありがとう。

4

2 に答える 2

2

のコードを確認するとnextVC、2 番目のビュー コントローラーの新しいインスタンスを作成してプッシュしています。そのため、初期化されたばかりの白い背景の VC が常に表示されます。

そのため、2 番目の VC のステータスを維持したい場合は、それを参照し続ける必要があります。

UIViewController *otherViewView Controller .h ファイルまたは .m にローカル プロパティとして追加します。次に、プッシュ機能を変更します。

//Only initialise first time. Later don't need
if (otherView == nil){
    otherView = [self.storyboard instantiateViewControllerWithIdentifier:@"vc2"] ;
}
[self presentViewController:otherView animated:YES completion:NULL] ;

それは働いているはずです。

于 2013-09-12T10:20:01.203 に答える
-1

viewController が閉じられるとメモリから削除され、保持カウントが 0 になるため、「Dismissed」View Controller を再開することはできません。vc1 は決して閉じられないため、その状態を維持しています。別のコントローラーを提示しているだけです。それをオンにします。vc2 の状態を保存したい場合は、SharedInstance または AppDelegate でフラグを設定し、vc2 が表示されるたびにそれをチェックします。

于 2013-09-12T10:19:55.030 に答える