この質問の重複があることは知っていますが、私の状況はここでは異なります。
ユーザーがホームに戻ると、(void)applicationDidEnterBackground
はAppDelegate
クラスから呼び出されます。ただし、ユーザーがホームボタンを押すと、このView Controllerが再び表示されないようにするため、別のViewControllerに切り替える(void)goToBeginning
という名前のメソッドがあります。 AppDelegateからこのメソッドを呼び出せるようにしたい。これにはNotificationCenter
を使いたくありません。また、ここで選択した解決策: アプリデリゲートからビューコントローラーメソッドを呼び出す 新しいオブジェクトを初期化するため、機能しませんが、既にビューにあるオブジェクトを呼び出すことができます。どうやってやるの? iOS7とXCode5を使用しています。
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];
}