0

View Controller を離れるときは、次を使用します。

[self dismissViewControllerAnimated:YES completion:nil];

これはView Controllerとその状態を「破壊」しますか?

View Controllerをそのままの状態のままにして、scrollViewsのボタンをオンにしてから、VCへのエントリを処理する親のボタンを押したときにそれに戻りたいと思います。親で次のようなコードを使用します。

- (void)handleDoubleTap:(UITapGestureRecognizer *)doubleTap {

realTaggingScreen = [[TaggingScreenViewController alloc]init];
realTaggingScreen.topLeftCornerImage = self.imageToPresent;
realTaggingScreen.salescallDate = self.salescallDate;
realTaggingScreen.shopName = self.shopName;
realTaggingScreen.refToThumbnailsVC = self.presentingThumbnailViewController;
realTaggingScreen.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:realTaggingScreen animated:YES];

}

alloc init が原因で、 これが明らかに間違っていることはわかっています。

タグ付け画面に親への参照と iExist という BOOL を与え、親にタグ付け画面への参照を与えようとしました。BOOL が true の場合は子への参照を開き、そうでない場合は init などを割り当てますが、これはうまくいきませんでした。これは正しい方法ではないと思わずにはいられません....

また、特定のオブジェクトを NSDocuments ディレクトリに保存し、アプリの実行間でそれらをロードしたいと考えていますが、その方法は知っています。今のところ、VC の状態を一時的に維持する方法に落ち着きます。

どんな助けでもいいでしょう。

4

2 に答える 2

2

ビューコントローラーを閉じると、解放されます。

もちろん、これが答えを提供しない限り、どこかにそれへの強い参照を保持します。

AppDelegate は、参照または呼び出し元のビュー コントローラーを保持するのに適した場所です。どのように対処したいかによります。後で使用するために強力な参照を保持する場合は、次回はそれを提示するだけで、再度作成 (alloc,init) しないことに注意してください。

参照を保持して再利用する場合は、一度に 1 回だけ表示するようにしてください。例えば。アプリケーション (デリゲート) にコントローラー A を提示させてはなりません。コントローラー A はコントローラー B を提示し、コントローラー B はコントローラー B を提示し、コントローラー B はコントローラー B を提示します。それを行いたい場合は、C 内に B の 2 番目のインスタンスを作成し、この B2 を提示する必要があります。

(古い場所から新しい場所に移動するビューを別の場所にもう一度表示することはできますが、ビュー階層のビュー コントローラー内でそれを行うべきではありません - それらを提示するかプッシュするかに関係なく)。

于 2013-03-03T15:08:58.050 に答える
2

ARC を使用している場合、View Controller を指しているポインターがなくなると、View Controller は解放されます。

realTaggingScreen のインスタンスへの強力なポインタを作成することをお勧めします

何かのようなもの

@property(nonatomic, strong)TaggingScreenViewController *realTaggingScreen;

あなたがやろうとしていることを私が理解できれば、BOOL iExist は必要ありません。あなたが使用することができます

self.realTaggingScreen = nil; 

もう永続化する必要がない場合は、次を使用して新しいインスタンスを割り当てる必要があるかどうかを確認できます

 if(self.realTaggingScreen) {
//initialize...
}
于 2013-03-03T15:11:31.793 に答える