三、如何从目标程序的非主页界面回到当前(跳转前)程序呢?
思路: 只要在目标程序的非主页界面知道跳转前的程序的URL即可直接跳转,所以,这里的关键是如何将跳转前的程序的URL传递到目标程序的非主页界面.
在目标控制器APPDelegate中能获取到用来跳转的URl信息的方法中将url传递给mianVC(事先定义好接收数据的属性),如上面代码所示.
在mianVc 中将url传递给需要切换的控制器(事先定义好接收数据的属性)
//切换界面,需要来到该方法.能够拿到切换前后的控制器
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "Session" {
let sessionVc = segue.destinationViewController as! SessionViewController
//传递数据
sessionVc.urlString = urlString
}
}
}
在目标控制器中根据url信息,获取跳转前控制器的scheme,从而得到跳转回去的url.
class SessionViewController: UIViewController {
//接收数据
var urlString = ""
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "退回跳前应用", style: .Plain, target: self, action: #selector(backToStartApp))
}
}
extension SessionViewController {
func backToStartApp() {
//分割Url,获取跳转前的程序的scheme
let scheme = urlString.componentsSeparatedByString("?")[1]
print(scheme)
//拼接字符串
let backString = "(scheme)://"
//打开url
openURL(backString)
}
private func openURL (urlString : String) {
let url = NSURL(string: urlString)!
if UIApplication.sharedApplication().canOpenURL(url) {
UIApplication.sharedApplication().openURL(url)
}
}
}
总结
以上就是关于iOS应用程序之间跳转的全部内容,希望能对各位iOS开发者们有所帮助,如果有疑问大家可以留言交流。
注:相关教程知识阅读请移步到IOS开发频道。










