0

横向きの目的で2つのViewControllerがあります

私の最初の VC (portraitVC) には複数の UITextFields (約 30 個) があります。私は NSNotifications を使用して、インターフェイスの向きがいつ変化するかを観察し、そのときにビューコントローラーを画面にプッシュします (ランドスケープに固有)。

私の質問は、私の UITexFields を両方の VC 間で共有することは可能ですか? たとえば、縦向きで何かを入力した場合、横向きモードに入っても、TextField に入力したテキストを失うことはありません。それも

あなたが助けてくれたり、ガイドしてくれたり、とても感謝しています

4

1 に答える 1

1

これを処理する方法はいくつか考えられます。

最初に、2 つの異なる VC を使用して向きの変更を処理するという選択を再検討してください。最初の VC の UI をポートレートで適切に見えるように更新するのはどれくらい難しいでしょうか?

次に、2 つの VC 間でデータをやり取りできるように、データを構造体またはクラスに抽象化します。

@interface MyDataStorage : NSObject {
    NSString* text1;
    NSString* text2;
    NSString* text3;
    NSString* text4;
}

最後に、2 つの VC の同期を維持するためのプロトコルを作成できます。

@protocol VCSync : NSObject {
- (void)updateTextBox1:(NSString*)contents;
- (void)updateTextBox2:(NSString*)contents;
...
}

TextBox デリゲート コールバックから適切なメソッドを呼び出せるように、他の VC への参照を保持する必要があります。

RE: ドキュメントへのリンク

この文章を参照している場合はThere are better ways to provide unique views for different orientations, such as presenting a new view controller、前の文を読む必要があります。

ビュー階層全体を交換する場合にのみ、新しい VC が提案されます。テキストボックスのサイズを変更するだけの場合は、willAnimateRotationToInterfaceOrientation:duration:VC 間で情報を移動する必要がないため、そのためのコードを記述します。

それでも別の VC を使用することにした場合は、必要に応じて一連のNSStrings またはNSAttributedStrings だけを含むクラスを作成します。次に、各 VC で次のようなメソッドが必要になります。

- (void)updateTextboxesWithData:(MyDataStorage*)data {
    for(UITextbox in self.textboxes) {
        t.text = data.string;
    }
}
于 2013-09-03T18:35:52.683 に答える