如何在此扩展程序中创建一个按钮,在不使用操作按钮的情况下在主应用程序中打开特定视图?
Posted
技术标签:
【中文标题】如何在此扩展程序中创建一个按钮,在不使用操作按钮的情况下在主应用程序中打开特定视图?【英文标题】:How can I create a button in this extension which opens up a specific view in the main app without using the action buttons? 【发布时间】:2019-07-05 09:52:53 【问题描述】:我正在 ios 中设置通知内容扩展,并想添加一个按钮,用于在主应用程序中打开特定视图。
我可以通过操作按钮(在底部)做到这一点,但想在扩展视图本身中添加一个按钮。
@IBAction func btn_openapp(_ sender: Any)
let mystring = "mydrop://" + String(campaign_id)
self.extensionContext?.open(URL(string: mystring)!, completionHandler: nil)
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool
d_me["single"] = url.host
print(url.host,url.scheme)
if url.scheme == "mydrop://"
let rootViewController = self.window!.rootViewController as! UINavigationController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let targerView = mainStoryboard.instantiateViewController(withIdentifier: "CampaignDetailViewController")
rootViewController.pushViewController(targerView, animated: false)
return true
【问题讨论】:
到目前为止你有什么尝试? 请分享一些代码以便更好地理解。 您好 Jan,请添加 minimal reproducible example,以便我们能够更恰当地回答您的问题。 这是来自应用内容扩展和 AppDelegate(在应用本身中)的代码。但是,它不会打开特定视图。我需要在代码中添加什么才能打开特定视图? func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool if url.scheme == "mydrop://" let rootViewController = self.window!.rootViewController 为! UINavigationController let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) let targerView = mainStoryboard.instantiateViewController(withIdentifier: "CampaignDetailViewController") rootViewController.pushViewController(targerView, animated: false) return true 【参考方案1】:您不应该尝试在扩展中添加存储属性。如果您需要一个存储属性,在本例中是一个按钮,您应该根据您的用例创建一个 UIView 或 UIViewController,并将其关联到另一个 UIView 或 UIViewController。
您还应该尝试分享一些代码,因为不清楚您要的是什么。
【讨论】:
以上是关于如何在此扩展程序中创建一个按钮,在不使用操作按钮的情况下在主应用程序中打开特定视图?的主要内容,如果未能解决你的问题,请参考以下文章