你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS運用法式之間的幾種跳轉情形詳解

iOS運用法式之間的幾種跳轉情形詳解

編輯:IOS開發綜合

媒介

在IOS開辟的進程中,我們常常會碰到好比須要從一個運用法式A跳轉到另外一個運用法式B的場景。這就須要我們控制IOS運用法式之間的互相跳轉常識。上面我們就經常使用到的幾種跳轉情形停止引見。

1、跳轉到另外一個法式的主界面

每一個法式都該有一個對應的Scheme,以肯定對應的url


一個法式要跳轉到(翻開)別的一個法式,須要將別的一個法式的Scheme添加到本身的運用法式白名單中(在info.plist中設置裝備擺設:LSApplicationQueriesSchemes,類型為數組,在數組中添加響應的Scheme)->IOS9.0開端


跳轉代碼

extension ViewController {

 @IBAction func jumpToXinWen(sender: AnyObject) {
  openURL("xinWen://")

 }
 private func openURL (urlString : String) {
  let url = NSURL(string: urlString)!
  if UIApplication.sharedApplication().canOpenURL(url) {
   UIApplication.sharedApplication().openURL(url)
  }

 }
}

2、跳轉到另外一個法式的指定界面

完成下面法式間跳轉的響應設置

完成跳轉代碼(與跳轉到主頁比擬,url多了參數,?後面參數是目的法式想要跳轉界面的segu標簽,?前面是以後法式的scheme)

 // MARK: - 跳轉微信同伙圈
 @IBAction func jumpToWeChatTimeLine(sender: AnyObject) {
  openURL("WeChat://TimeLine?xinWen")

 }
 // MARK: - 跳轉微信石友
 @IBAction func jumpToWeChatSession(sender: AnyObject) {
  openURL("WeChat://Session?xinWen")

 }
 private func openURL (urlString : String) {
  let url = NSURL(string: urlString)!
  if UIApplication.sharedApplication().canOpenURL(url) {
   UIApplication.sharedApplication().openURL(url)
  }

在目的法式AppDelegate中監聽用來跳轉的響應信息,依據這些信息讓目的法式本身完成頁面切換

extension AppDelegate {
 //監聽以後法式被其他法式經由過程甚麼樣的Url翻開
 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
  //依據url跳轉對應頁面
  //1.url轉化成字符串
  let urlString = url.absoluteString
  //2.獲得首頁掌握器
  let rootVc = application.keyWindow?.rootViewController
  let mainVc = rootVc?.childViewControllers[0] as! ViewController
   //將url傳遞給mianVc
  mainVc.urlString = urlString
  //3.依據字符串內容完成對應跳轉
  if urlString.containsString("Session") {//跳轉石友
   mainVc.performSegueWithIdentifier("Session", sender: nil)
  }else if urlString.containsString("TimeLine") {//跳轉同伙圈
   mainVc.performSegueWithIdentifier("TimeLine", sender: nil)
  }
  return true
 }
}

3、若何從目的法式的非主頁界面回到以後(跳轉前)法式呢?

思緒: 只需在目的法式的非主頁界面曉得跳轉前的法式的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運用法式之間的幾種跳轉情形詳解】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved