Доступ к методам pushViewController из popViewController

Я работаю над приложением, основанным на представлении. В этом у меня есть два контроллера просмотра. Это: Rootviewcontroller и Detailviewcontroller.

Теперь я передаю значения в Detailviewcontroller, используя метод pushViewController. Он отлично работает. Но теперь, когда я выхожу из этого Detailviewcontroller, я должен получить доступ к своей функции в Rootviewcontroller. Можно пожалуйста подскажите?

Любая помощь будет оценена!

-Сатья


person Sathiya    schedule 23.10.2009    source источник


Ответы (3)


вызовите myfunction в анимированном методе viewWillAppear:(BOOL) контроллера корневого представления или в анимированном методе viewDidAppear:(BOOL), в зависимости от того, когда вы хотите, чтобы он вызывался. таким образом, всякий раз, когда этот контроллер появляется, код, который вам нужен, будет запускаться.

person Kevlar    schedule 23.10.2009

Я не очень понимаю ваш вопрос на 100%, но я думаю, вы хотите получить доступ к методам корневого контроллера представления из другого контроллера представления, расположенного дальше по стеку?

Вы можете сделать что-то подобное в DetailViewController:

RootViewController *rootViewController = (RootViewController*)self.navigationController.topViewController;

Теперь, когда у вас есть ссылка на корень, вы можете вызывать для него методы по своему усмотрению.

person bpapa    schedule 23.10.2009
comment
Да, я хочу получить доступ к методам Rootviewcontroller из другого контроллера представления. В соответствии с вашим предложением я попробовал и методы rootviewcontroller, но приложение было завершено. Есть ли другое решение? - person Sathiya; 23.10.2009

Сохраните экземпляр rootViewController в AppDelegate.

// AppDelegate.h
RootViewController* rootViewController;

Добавьте метод доступа к реализации.

// AppDelegate.m     
- (UIViewController*) GetRootViewController {
    return rootViewController;
} 

Вызовите этот метод, чтобы получить rootViewController из любого места вашего приложения.

UIViewController* controller =
    [(AppDelegate*)[[UIApplication sharedApplication] delegate] GetRootViewController];
person timbos    schedule 11.02.2010