从应用程序委托调用UIViewController方法

我知道有这个问题的重复,但我的情况是不同的。

当用户回到主页(void)applicationDidEnterBackgroundAppDelegate类调用。 但是,一旦用户按Home键,我不希望用户再次看到这个视图控制器,所以我有一个名为(void)goToBeginning切换到另一个视图控制器的方法。 我想能够从AppDelegate调用此方法。 我真的不想使用NotificationCenter 。 另外挑选的解决scheme在这里: 从应用程序委托调用视图控制器方法不起作用,因为它初始化新的对象,而我想能够调用已经在视图中的对象。 我怎样才能做到这一点? 我正在使用iOS 7和XCode 5。

  1. 通知。 但是你不想要这个。
  2. 你可以在AppDelegate获得你的viewController的引用。 在(void)applicationDidEnterBackground调用(void)goToBeginning方法

例如:在你的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]; }