Изменение свойств открытого ViewController через стек NavigationController
Хотите знать, как я могу установить свойства контроллеров представления, которые уже находятся в стеке NavigationController?
Моя ситуация:
Я хочу настроить поток загрузки изображений следующим образом
(Стек навигации) RootViewController -> TakePictureViewController -> EditPictureViewController -> UploadPictureViewController
Когда пользователь подтверждает выгрузку из UploadPictureViewController, вместо того, чтобы начинать выгрузку, я хочу установить свойство NSDictionary в RootViewController, который содержит запрос выгрузки, затем перетащить стек навигации обратно в RootViewController и заставить его обрабатывать инициирование и отчеты о состоянии объекта. запрос.
Вот мой код в uploadpictureviewcontroller, в настоящее время код появляется на правильном контроллере представления, но свойство uploadPackage все еще равно нулю, также я пытался -setUploadPackage
RootViewController *rvc = (RootViewController *)[self.navigationController.viewControllers objectAtIndex:0];
rvc.uploadPackage = uploadPackage;
[self.navigationController popToViewController:rvc animated:YES];
Вся помощь оценена, спасибо.
1 ответ
Попробуйте использовать [self.navigationController popToRootViewControllerAnimated:YES]
, Это должно сделать это.
РЕДАКТИРОВАТЬ:
Если у вас есть только один экземпляр RootViewController, вы можете настроить его как одноэлементный, и, следовательно, вы можете получить к нему доступ из любого другого контроллера (так же, как appDelegate). Для этого вам нужно добавить следующее к вашему RootViewController.m
под synthesize...;
:
static RootViewController *rootViewController;
+(id)sharedRootController {
return rootViewController;
}
внутри вашего init
метод для RootViewController
добавьте следующую строку:
rootViewController = self;
теперь вернемся к вашему UploadPictureViewController
Вы можете установить uploadPackage так:
RootViewController *rvc = [RootViewController sharedRootController];
rvc.uploadPackage = uploadPackage;
Обратите внимание, что вам НЕ следует использовать метод синглтона, если должен быть более одного экземпляра RootViewController.
надеюсь это поможет!