Вызов метода UIViewController из делегата приложения

Я знаю, что есть дубликаты этого вопроса, но моя ситуация здесь разная.

Когда пользователь возвращается в дом (void)applicationDidEnterBackground получает вызов из класса AppDelegate. Однако, как только пользователь нажимает кнопку "домой", я не хочу, чтобы пользователь снова видел этот контроллер представления, поэтому у меня есть метод с именем (void)goToBeginning, который переключается на другой контроллер представления. Я хочу, чтобы иметь возможность вызвать этот метод из AppDelegate. Я действительно не хочу использовать NotificationCenter для этого. Также выбранное решение здесь: Вызов метода контроллера просмотра из делегата приложения не работает для меня, поскольку он инициализирует новый объект, тогда как я хочу иметь возможность вызвать объект, который уже находится в представлении. Как я могу это сделать? Я использую iOS 7 и XCode 5.

Ответ 1

  • Уведомление. Но вы не хотите этого.
  • Вы можете получить ссылку на ваш viewController в AppDelegate. Затем вызовите этот метод (void)goToBeginning в (void)applicationDidEnterBackground

Например: в viewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    appDelegate.myViewController = self;
}

И в вашем AppDelegate:

@class MyViewController;

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (weak, nonatomic) MyViewController *myViewController;

@end

И в реализации AppDelegate:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [self.myViewController goToBeginning];
}