如何从Today Widget打开特定的View Controller?

时间:2015-04-04 09:56:28

标签: ios swift ios8-today-widget

我正在创建一个简单的今日小部件,其中包含一个按钮,此按钮应该 - 按下时 - 在我相应的应用程序中打开一个特定的视图控制器。

我想到的唯一解决方案是创建一个只能打开初始视图控制器的URL类型(至少据我所知)。

以下是我目前在UIButton操作中使用的代码:

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

1 个答案:

答案 0 :(得分:8)

您可以为应用创建网址类型(例如myapp://),并在主机名后解析部分。例如myapp://signupformmyapp://activities/15。您可以灵活地根据需要制作这些URL。您无法将网址类型真正地绑定到特定的VC(自动),您必须完成读取URL并在应用代理中交换VC的工作。

执行此操作后,您需要在应用代理中解析此网址。当您的应用程序通过URL打开时,您将使用方法application:openURL:sourceApplication:annotation:docs)调用您的应用程序代理,并且您可以检查所需项目的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执行任何操作之前添加{{3}}。不幸的是,这些行为没有一个普遍的答案,这一切都取决于你究竟想做什么。