Изменение свойств открытого 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.

надеюсь это поможет!

Другие вопросы по тегам