我有2个ViewControllers用于横向定位
我的第一个VC(portraitVC)有多个UITextFields(大约30个) 我正在使用NSNotifications来观察接口方向何时发生变化,何时它会在屏幕上推送一个viewController(特定于横向)
我现在的问题是,是否有可能在两个VC之间共享我的UITexFields,就像我以纵向方式输入内容然后当我进入横向模式时,我不会丢失我在TextField上输入的文本:它应该工作另一种方式
您的帮助或指导非常感谢
答案 0 :(得分:1)
我可以想到几种方法来处理这个问题。
首先,重新考虑您选择使用两个不同的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委托回调调用适当的方法。
RE:文档链接
如果您引用此段落:There are better ways to provide unique views for different orientations, such as presenting a new view controller
那么您应该阅读上一句话。
只有在您交换整个视图层次结构时,才会建议使用新的VC。如果您只是调整文本框的大小,那么我只需在willAnimateRotationToInterfaceOrientation:duration:
中编写代码即可,因为这样您就不必将任何信息从一个VC移动到另一个VC。
如果您仍然决定继续使用另一个VC,那么我会根据您的需要创建一个只包含一堆NSString
或NSAttributedString
的类。然后,您需要在每个VC上使用一种方法,例如:
- (void)updateTextboxesWithData:(MyDataStorage*)data {
for(UITextbox in self.textboxes) {
t.text = data.string;
}
}