我正在创建一个简单的今日小部件,其中包含一个按钮,此按钮应该 - 按下时 - 在我相应的应用程序中打开一个特定的视图控制器。
我想到的唯一解决方案是创建一个只能打开初始视图控制器的URL类型(至少据我所知)。
以下是我目前在UIButton操作中使用的代码:
var url = NSURL(string: "_my_url_://")
extensionContext?.openURL(url!, completionHandler: nil)
答案 0 :(得分:8)
您可以为应用创建网址类型(例如myapp://
),并在主机名后解析部分。例如myapp://signupform
或myapp://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}}。不幸的是,这些行为没有一个普遍的答案,这一切都取决于你究竟想做什么。