0

ストーリーボードを使用するXcode4.6のアプリケーションがあります。私のアプリケーションの中には、2つの関連するビューコントローラーがあります。1つは質問をするもので、もう1つは質問に対する回答を提示するものです。(iOSの初心者)私はもともと、質問コントローラーが回答コントローラーにプッシュセグエし、回答コントローラーが質問コントローラー(新しい質問の場合)に(ボタンを介して)プッシュセグエするように設定していました。にすると、アプリケーションの使用時間が長くなるほど、巨大なナビゲーションスタックが発生し、メモリがクラッシュします。

したがって、私は次のことを行う必要があると思います。質問コントローラーは回答コントローラーにセグエする必要があり、次に回答コントローラーが質問コントローラーにPOPバックする必要がありますが、新しい質問画像を使用します。質問コントローラーのviewWillAppearメソッドに画像をリセットするコードを入れましたが、これは正常に機能しますが、ここに問題があります。質問コントローラーが表示されるたびに画像をリセットしたくない場合があります。回答コントローラで回答が選択されている場合にのみリセットしたい。質問コントローラーFROMにboolプロパティを設定して、条件付きでビューをリセットしようとしましたが、これは機能しません。

2つ目の問題は、記憶のために質問コントローラーに戻る必要があるということですが、スタイルのためにプッシュセグエのような錯覚を与えたいと思います。これが可能かどうかはわかりません。

要するに、私の2つの主な質問は次のとおりです
。1)ポップ先のコントローラーのビューを条件付きでリセットすることは可能ですか?

2)ビューコントローラのポップを左から右ではなく右から左にアニメーション化することは可能ですか?

誰かが私のためにこれらの質問に答えることができますか、または私が解決しようとしている究極のメモリの問題に対するまったく異なる解決策を提案することさえできますか?ありがとう。

4

1 に答える 1

0

1.私にとっては委任の仕事のように聞こえます。protocol回答VCでは、デリゲートのaとiVarを宣言します。このようなもの:

@protocol AnswerDelegate
- (void)answerSelected:(NSString *)answer forQuestion:(NSString *)passedQuestion;
@end

次に、デリゲートプロパティと弱いiVarを追加します(質問のパブリックプロパティも追加しました)。

@interface MyAnswerViewController : UIViewController {
    __unsafe_unretained id <AnswerDelegate> _delegate;
}

@property (nonatomic, assign) id <AnswerDelegate> delegate;
@property (nonatomic, strong) NSString *passedQuestion;

次に、の実装ファイルでMyAnswerViewController、答えが与えられたときにデリゲートメソッドを起動します。

[self.delegate answerSelected:@"Answer" forQuestion:@"PassedQuestion"];

質問VCで行う必要があるのは、そのプロトコルの代理人として自分自身を宣言することだけです。

@interface MyQuestionViewController : UIViewController <AnswerDelegate>

次に、実装ファイルのどこかに、デリゲートメソッドを実装します。

- (void)answerSelected:(NSString *)answer forQuestion:(NSString *)passedQuestion {
  // Do something with the question and answer
  // Pop the VC if needed
}

これは、オブジェクトを呼び出し元のクラスに戻す処理を行うための非常に簡単な方法です。

2.これは、トランジション用に独自のアニメーションを実装する必要があります。以下のSO投稿を参照してください。

UINavigationController:ビューコントローラーを反対方向にポップします

于 2013-03-06T19:25:09.657 に答える