これを処理する方法はいくつか考えられます。
最初に、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 を使用することにした場合は、必要に応じて一連のNSString
s またはNSAttributedString
s だけを含むクラスを作成します。次に、各 VC で次のようなメソッドが必要になります。
- (void)updateTextboxesWithData:(MyDataStorage*)data {
for(UITextbox in self.textboxes) {
t.text = data.string;
}
}