12

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

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

4

1 に答える 1

42
  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];
}
于 2013-09-23T01:53:24.233 に答える