2017-07-05 5 views
0

に呼び出さないように私はナビゲーションスタックを構成する2つの方法を試してみました新しいIMessageが拡張プロジェクトがあります。私のストーリーボードでIMessageが拡張:すべてのデリゲートメソッドでルートナビゲーションコントローラの結果は、私のMSMessagesAppViewController

  1. を私はエントリポイントを、自分のMSMessagesAppViewControllerをルートコントローラとして持つUINavigationControllerに設定します。

  2. または、自分のストーリーボードのエントリポイントとして自分のMSMessagesAppViewControllerを設定します。 (それを所有するUINavigationControllerはありません)。

上記のシナリオ1の場合、ナビゲーションコントローラは正常に動作し、新しい画面をスタックにプッシュできます。 (ナビゲーションバー全体がExpandedビューで非表示になっていることを除いては、これは別の問題ですが、まだ把握する必要があります)。ただし、私のMSMessagesAppViewControllerのデリゲートメソッドのどれもこの構成で呼び出されません。例えば: willTransitionToPresentationStyle didTransitionToPresentationStyle、 willBecomeActiveWithConversation、 didSelectMessage上記シナリオ#2の

は、MSMessagesAppViewControllerメソッドが呼び出され得るか(これらのいずれも呼び出さないGET)。 (UINavigationControllerはストーリーボードのエントリポイントではないため)。

私の質問は次のとおりです:どのように私はiMessageエクステンションアプリケーションのルートにあるので、私はプッシュナビゲーションを行うことができますが、同時にMSMessagesAppViewControllerのメソッドは、Apple API?

答えて

1

それが文書化されていないようですが、メッセージの拡張子は、エントリポイントがMSMessagesAppViewControllerのサブクラスであることを期待のように、それが見えます。これらのメソッドは、デリゲートメソッドではなく、スーパークラスのオーバーライドなので、他のメソッドをどこにでも配置する方法はありません。メッセージ拡張システムは、あなたが説明したケースを処理することができますが、実際にはそうではありません。私が試してみた何

は次のとおりです。

  • エントリはMSMessagesAppViewControllerのサブクラスを指してください。
  • オブジェクトのライフサイクルの早い段階で(viewDidLoad)、UINavigationControllerを作成し、MSMessagesAppViewControllerサブクラスの子ビューコントローラとして追加します。それが画面全体を埋めるようにします。 effect--あなたのナビゲーションコントローラで

Now--は拡張のルートです。 willTransitionToPresentationStyleのようなメッセージイベントはまだMSMessagesAppViewControllerサブクラスを経由するので、実際にルートではありません。しかし、それ以外のものはすべてそこから始まります。これは、UIとナビゲーションのルートです。

その間、アップルで強化リクエストを提出するとよいかもしれません。メッセージ・エクステンション・システムがナビゲーション・コントローラのルートVCをチェックして正しいクラスかどうかを確かめることは合理的です。

関連する問題