web-dev-qa-db-ja.com

アプリデリゲートからUIViewControllerメソッドを呼び出す

この質問の重複があることは知っていますが、私の状況はここでは異なります。

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

12
Sarp Kaya
  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];
}
42
sunkehappy