我可以想出几种方法来处理这个问题。
首先,重新考虑您选择使用两个不同的 VC 来处理方向变化。将您的第一个 VC 上的 UI 更新为适合纵向显示有多难?
其次,将数据抽象为结构或类,以便您可以在两个 VC 之间来回传递它
@interface MyDataStorage : NSObject {
NSString* text1;
NSString* text2;
NSString* text3;
NSString* text4;
}
最后,您可以创建一个协议来保持两个 VC 同步:
@protocol VCSync : NSObject {
- (void)updateTextBox1:(NSString*)contents;
- (void)updateTextBox2:(NSString*)contents;
...
}
您需要保留对其他 VC 的引用,以便您可以从 TextBox 委托回调中调用适当的方法。
回复:文档链接
如果你引用这段话: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;
}
}