Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS-在ViewController之间共享数据_Ios_Uiviewcontroller_Uitextfield_Landscape_Uiinterfaceorientation - Fatal编程技术网

iOS-在ViewController之间共享数据

iOS-在ViewController之间共享数据,ios,uiviewcontroller,uitextfield,landscape,uiinterfaceorientation,Ios,Uiviewcontroller,Uitextfield,Landscape,Uiinterfaceorientation,我有两个用于横向定向的ViewController 我的第一个VC(肖像VC)有多个UITextField(大约30个) 我使用NSNotifications来观察界面方向何时改变,何时改变,它会在屏幕上推送viewController(特定于横向) 我现在的问题是,是否有可能在两个VC之间共享我的UITexFields,比如如果我在纵向模式中输入某个内容,那么当我进入横向模式时,我不会丢失我在文本字段中输入的文本:它也应该以相反的方式工作 非常感谢您的帮助或指导我可以想出一些方法来处理这个问题

我有两个用于横向定向的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——你还能想到其他什么方法来实现这一点呢请分享