Я могу придумать пару способов справиться с этим.
Прежде всего, передумайте свой выбор, чтобы использовать два разных VC для обработки изменений ориентации. Насколько сложно было бы обновить пользовательский интерфейс вашего первого VC, чтобы он выглядел соответствующим портрету?
Во-вторых, абстрактные данные из в структуры или класса, так что вы можете передать его назад и вперед между вашими двумя 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: Документация ссылка
Если вы ссылки этот отрывок: 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, поскольку ваши потребности диктуют. Вы бы тогда нужен метод на каждом из вашего VCs который идет что-то вроде:
- (void)updateTextboxesWithData:(MyDataStorage*)data {
for(UITextbox in self.textboxes) {
t.text = data.string;
}
}
Вот хороший гид (с источником): http://iphonedevsdk.com/forum/iphone-sdk-development/54859-sharing -data-between-view-controllers-and-other-objects-link-fixed.html –