2015-04-04 32 views
4

我正在創建一個簡單的今天小部件,其中包含一個按鈕,這個按鈕應該 - 當按下時 - 在我相應的應用程序中打開一個特定的視圖控制器。如何從Today Widget打開特定的View Controller?

我想過的唯一解決方案是創建一個URL類型,只能打開初始視圖控制器(至少據我所知)。

下面是我目前使用的UIButton的行動中的代碼:

var url = NSURL(string: "_my_url_://") 
    extensionContext?.openURL(url!, completionHandler: nil) 

回答

8

您可以創建爲您的應用URL類型(比如myapp://)和主機名解析後的部分。因此,例如myapp://signupformmyapp://activities/15。無論您想要什麼,您都可以靈活地製作這些網址。您無法將URL類型真正綁定到特定的VC(自動),您必須完成閱讀URL並在應用程序委託中交換VC的工作。

當你這樣做時,你需要在你的應用代理中解析這個URL。當您的應用程序通過URL打開時,您將通過方法application:openURL:sourceApplication:annotation:docs)向您的應用程序代理進行調用,並且您可以檢查所需的任何項目的URL。

基於查看URL,您將根據您需要顯示的視圖控制器手動操作導航堆棧。因此,舉例來說,你可能會在你的標籤欄控制器中加入grab a view controller from your storyboard,或者你可能只需switch to a given tab,或者你在做任何事情之前加入might back out all the current view controllers to your root screen。不幸的是,這些行爲沒有普遍的答案,這完全取決於你想要做什麼。

+0

我試過了,並實現了應用程序:openURL:sourceApplication:annotation,但奇怪的是,它沒有被調用。 (谷歌也沒有幫助) – 2015-04-04 18:02:25

+0

但是你的應用程序啓動?奇怪。我製作了一個快速參考應用程序,您可能可以在(您的項目的「信息」選項卡下找到)。如果您在safari中鍵入myapp://,您會看到它啓動該回調方法。 http://cl.ly/0H3h2Q2n3b0V – Parrots 2015-04-04 18:29:25

+0

是的,它啓動,但它只是顯示初始視圖控制器。 – 2015-04-04 18:51:04

相關問題