0

我有 2 个 ViewControllers 用于横向定位

我的第一个 VC (portraitVC) 有多个 UITextFields (大约 30 个) 我正在使用 NSNotifications 来观察界面方向何时发生变化以及它何时将 viewController 推送到屏幕上(特定于横向)

我现在的问题是,是否可以在两个 VC 之间共享我的 UITexFields,例如如果我以纵向输入内容,然后当我进入横向模式时,我不会丢失我在 TextField 上输入的文本:它应该以相反的方式工作也

非常感谢您的帮助或指导

4

1 回答 1

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 委托回调中调用适当的方法。

回复:文档链接

如果你引用这段话:There are better ways to provide unique views for different orientations, such as presenting a new view controller那么你应该阅读前一句。

仅当您要换出整个视图层次结构时,才建议使用新的 VC。如果您只是调整文本框的大小,那么我只需编写代码即可,willAnimateRotationToInterfaceOrientation:duration:因为您不必将任何信息从一个 VC 移动到另一个。

如果您仍然决定继续使用另一个 VC,那么我将创建一个仅包含一堆NSStrings 或NSAttributedStrings 的类,以满足您的需求。然后,您需要在每个 VC 上使用一个方法,类似于:

- (void)updateTextboxesWithData:(MyDataStorage*)data {
    for(UITextbox in self.textboxes) {
        t.text = data.string;
    }
}
于 2013-09-03T18:35:52.683 回答