iOS-在ViewController之间共享数据
我有两个用于横向定向的ViewController 我的第一个VC(肖像VC)有多个UITextField(大约30个) 我使用NSNotifications来观察界面方向何时改变,何时改变,它会在屏幕上推送viewController(特定于横向) 我现在的问题是,是否有可能在两个VC之间共享我的UITexFields,比如如果我在纵向模式中输入某个内容,那么当我进入横向模式时,我不会丢失我在文本字段中输入的文本:它也应该以相反的方式工作iOS-在ViewController之间共享数据,ios,uiviewcontroller,uitextfield,landscape,uiinterfaceorientation,Ios,Uiviewcontroller,Uitextfield,Landscape,Uiinterfaceorientation,我有两个用于横向定向的ViewController 我的第一个VC(肖像VC)有多个UITextField(大约30个) 我使用NSNotifications来观察界面方向何时改变,何时改变,它会在屏幕上推送viewController(特定于横向) 我现在的问题是,是否有可能在两个VC之间共享我的UITexFields,比如如果我在纵向模式中输入某个内容,那么当我进入横向模式时,我不会丢失我在文本字段中输入的文本:它也应该以相反的方式工作 非常感谢您的帮助或指导我可以想出一些方法来处理这个问题
非常感谢您的帮助或指导我可以想出一些方法来处理这个问题 首先,重新考虑使用两个不同的风投来处理方向变化的选择。要在你的第一个VC上更新UI,使其在纵向上看起来合适,有多难 其次,将数据抽象成一个结构或类,以便在两个VCs之间来回传递
@interface MyDataStorage : NSObject {
NSString* text1;
NSString* text2;
NSString* text3;
NSString* text4;
}
最后,您可以创建一个协议来保持两个VCs同步:
@protocol VCSync : NSObject {
- (void)updateTextBox1:(NSString*)contents;
- (void)updateTextBox2:(NSString*)contents;
...
}
您需要保留对其他VC的引用,以便可以从TextBox委托回调调用适当的方法
RE:文档链接
如果你正在引用这篇文章:有更好的方法为不同的方向提供独特的视图,比如展示一个新的视图控制器
,那么你应该阅读上一句话
只有当您要交换整个视图层次结构时,才建议使用新的VC。如果您只是调整文本框的大小,那么我只需在WillAnimateRotationInterfaceOrientation:duration:
中编写代码,这样您就不必将任何信息从一个VC移动到另一个VC
如果您仍然决定使用另一个VC,那么我将创建一个类,根据您的需要,它只包含一堆NSString
s或NSAttributedString
s。然后,您需要在每个VCs上使用类似以下内容的方法:
- (void)updateTextboxesWithData:(MyDataStorage*)data {
for(UITextbox in self.textboxes) {
t.text = data.string;
}
}
这里有一个很好的指南(附资料):谢谢你的快速回复——我想让景观看起来完全不同——同样根据苹果的文档——他们建议使用两个独立的VC——你还能想到其他什么方法来实现这一点呢请分享