Вам необходим объект модели данных, в котором хранятся данные для приложения.
Модель данных - это настраиваемый, автономный объект, доступный из любой точки приложения. Объект модели данных ничего не знает ни о каких представлениях или контроллерах представления. Он просто хранит данные и логические отношения между этими данными.
Когда разные части приложения должны записывать или читать данные, они записывают и читают данные в модель данных. В вашем случае view1 будет сохранять свои данные в модели данных при выгрузке, а затем view2 будет считывать эти данные из модели данных при загрузке (или наоборот.)
В правильно сконструированном приложении никакие два контроллера представления не должны иметь доступа к внутренним данным другого контроллера. (Единственная причина, по которой контроллеры представления должны знать о существовании другого контроллера, заключается в том, должен ли он инициировать загрузку этого другого контроллера.)
Быстрый и грязный способ создания модели данных - добавить атрибуты в делегат приложения, а затем вызвать делегат приложения из контроллеров представления, используя:
YourAppDelegateClass *appDelegate = [[UIApplication sharedApplication] delegate];
myLocalProperty = appDelegate.someDataModelProperty;
Это будет работать для небольшого проекта, но по мере того, как ваши данные становятся сложными, вы должны создать выделенный класс для вашей модели данных.
Edit:
Чтобы уточнить для вашего конкретного случая, вы бы добавили вызов в модель данных, когда приемник viewController станет активным.
Размещение данных в методе init или viewDidLoad
не будет работать, поскольку в UITabBar
пользователи могут переключаться назад и вперед без выгрузки представления или повторной инициализации контроллера представления.
Лучшее место для извлечения изменяющихся данных - метод контроллера viewWillAppear
. Таким образом, данные будут обновляться каждый раз, когда пользователь переключается на эту вкладку.