0

アプリが通知を受け取ると、特定のビューを開く次のように処理します。

    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if (localNotif) {
        NSLog(@"Recieved Notification  didFinishLaunchingWithOptions %@",localNotif);
        [theLastPresentedViewController presentViewController:myVC animated:YES completion:nil];
    }

基本的に私の質問は、最後に提示された ViewController theLastPresentedViewControllerにアクセスして、その上に提示できるようにする方法myViewです。

アプリは tabBarViewController をベースとして使用しますが、他のビューの上に他のビュー コントローラーを表示するので、どのビュー コントローラーが最後のビューとして表示されたかを知る方法はありません。

提示する各ViewControllerを手動で覚えておく必要があるので、アプリの起動時に最後のものにアクセスできますか、それともアプリの最後に表示されたviewControllerに直接アクセスする方法はありますか?

ユーザーは HOME ボタンを押してアプリを終了するだけなので、現時点でどのビューが表示されていたかを知る方法はありません。tabBarViewController に到達するまで、これらすべてのビューをスタックから削除しても問題ありません。

どうもありがとう!

4

3 に答える 3

2

基本的に、ナビゲーション スタックに対して「ランダムな」プッシュを実行するのは悪い考えです。通知への反応として、セミモーダルまたはモーダル コントローラーを提示できます。通常、「上部に表示される」ビュー コントローラーへのポインターは必要ありません。

または、次のように、ビュー コントローラー/ビューがファーストレスポンダーを受け入れるようにすることもできます。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

これで、イベントを送信できます。

[[UIApplication sharedApplication] sendAction:@selector(popNotification) to:nil from:notificationObj forEvent:nil];

そして、最初のレスポンダーにディスパッチされます (つまり、ビューはカスタム イベントを処理できないため、フォーカスのあるビューであり、ビュー コントローラーにダウンします)。この時点から、一番上に表示されているビュー コントローラーのコンテキストになり、元のタスクを続行できます。

于 2012-08-16T13:11:15.620 に答える
1

一番上のウィンドウ/ビューにアクセスするためにこれを見つけました:

[[[UIApplication sharedApplication] keyWindow] addSubview:someView]
于 2012-08-24T07:56:56.277 に答える
0
    - (void)applicationDidEnterBackground:(UIApplication *)application{
saveIndex = self.tabBarController.selectedIndex //shows the current index of the viewController of the Array of the tabBarController
    //add some stuff to save the integer}

ユーザーがアプリを終了したときにこの整数を保存し、アプリがアクティブになった後、配列のこの要素で tabBarController をロードできます

保存したビューを開くには、AppDelegate に次のように記述します。

  - (void)applicationDidBecomeActive:(UIApplication *)application{
[self.tabBarController setSelectedIndex:savedIndex];}

これでできるはず

于 2012-08-16T13:07:34.407 に答える