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

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

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

1 ответ

Решение
  1. Уведомление. Но ты не хочешь этого.
  2. Вы можете получить ссылку на ваш, что 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];
}
Другие вопросы по тегам