2017-07-05 20 views
0

我有一個新的iMessage擴建項目中,我試圖構建導航堆棧的2種方式:的iMessage擴展:根導航控制器結果在所有委託方法不被調用我MSMessagesAppViewController

  1. 在我的故事板我將入口點設置爲以MSMessagesAppViewController作爲根控制器的UINavigationController。

  2. 或者我直接將我的MSMessagesAppViewController設置爲我的故事板中的入口點。 (沒有擁有它的UINavigationController)。

對於上面的場景#1,導航控制器工作正常,我可以在堆棧上推送新屏幕。 (除了整個導航欄被隱藏在擴展視圖中,這是一個單獨的問題,我仍然需要弄清楚)。但是,我的MSMessagesAppViewController的委託方法中沒有NONE被這個配置調用。如: willTransitionToPresentationStyle didTransitionToPresentationStyle, willBecomeActiveWithConversation, didSelectMessage (都未得到調用)

對於上述場景#2,MSMessagesAppViewController方法都被調用。 (因爲UINavigationController不是故事板中的入口點)。

所以我的問題是:如何讓UINavigationController位於我的iMessage擴展應用程序的根目錄下,這樣我就可以執行Push導航,但同時也會調用MSMessagesAppViewController的方法,如Apple所述API?

回答

1

雖然它似乎沒有記錄,但它看起來像消息擴展程序期望入口點是MSMessagesAppViewController的子類。這些方法不是委託方法,它們是超類覆蓋,所以無法安排它們去其他任何地方。消息擴展系統可以處理你描述的情況,但是 - 但是 - 並不 - 。

我想嘗試的是:

  • 使該條目點的MSMessagesAppViewController一個子類。
  • 在該對象的生命週期早期(可能在viewDidLoad)創建一個UINavigationController並將其作爲MSMessagesAppViewController子類的子視圖控制器添加。讓它填滿整個屏幕。

現在 - 實際上 - 您的導航控制器是擴展的根。這不是真正的根源,因爲像willTransitionToPresentationStyle這樣的消息事件仍然會通過MSMessagesAppViewController子類。但其他一切都從那裏開始。這是UI和導航的根源。

與此同時,向Apple提交增強請求可能會很好。認爲消息擴展系統會檢查導航控制器的根目錄VC以查看它是否是正確的類,並且將來可能會添加它,這是合理的。

相關問題