Вызов метода 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];
}