最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS應用程序之間的幾種跳轉情況詳解

 更新時間:2016年09月28日 11:55:08   作者:鯤鵬DP  
這篇文章給大家詳細介紹了iOS應用程序之間跳轉的幾種情況,包括跳轉到另一個程序的主界面、跳轉到另一個程序的指定界面以及如何從目標程序的非主頁界面回到當前(跳轉前)程序呢?有需要的朋友們可以下面來一起看看。

前言

在iOS開發(fā)的過程中,我們經常會遇到比如需要從一個應用程序A跳轉到另一個應用程序B的場景。這就需要我們掌握iOS應用程序之間的相互跳轉知識。下面我們就常用到的幾種跳轉情況進行介紹。

一、跳轉到另一個程序的主界面

每個程序都該有一個對應的Scheme,以確定對應的url


一個程序要跳轉到(打開)另外一個程序,需要將另外一個程序的Scheme添加到自己的應用程序白名單中(在info.plist中配置:LSApplicationQueriesSchemes,類型為數(shù)組,在數(shù)組中添加相應的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)
  }

 }
}

二、跳轉到另一個程序的指定界面

完成上面程序間跳轉的相應設置

實現(xiàn)跳轉代碼(與跳轉到主頁相比,url多了參數(shù),?前面參數(shù)是目標程序想要跳轉界面的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中監(jiān)聽用來跳轉的相應信息,根據(jù)這些信息讓目標程序自己實現(xiàn)頁面切換

extension AppDelegate {
 //監(jiān)聽當前程序被其他程序通過什么樣的Url打開
 func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
  //根據(jù)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.根據(jù)字符串內容完成對應跳轉
  if urlString.containsString("Session") {//跳轉好友
   mainVc.performSegueWithIdentifier("Session", sender: nil)
  }else if urlString.containsString("TimeLine") {//跳轉朋友圈
   mainVc.performSegueWithIdentifier("TimeLine", sender: nil)
  }
  return true
 }
}

三、如何從目標程序的非主頁界面回到當前(跳轉前)程序呢?

思路: 只要在目標程序的非主頁界面知道跳轉前的程序的URL即可直接跳轉,所以,這里的關鍵是如何將跳轉前的程序的URL傳遞到目標程序的非主頁界面.

     在目標控制器APPDelegate中能獲取到用來跳轉的URl信息的方法中將url傳遞給mianVC(事先定義好接收數(shù)據(jù)的屬性),如上面代碼所示.

     在mianVc 中將url傳遞給需要切換的控制器(事先定義好接收數(shù)據(jù)的屬性)

 //切換界面,需要來到該方法.能夠拿到切換前后的控制器
 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

  if segue.identifier == "Session" {
   let sessionVc = segue.destinationViewController as! SessionViewController
   //傳遞數(shù)據(jù)
   sessionVc.urlString = urlString
  }
 }
}

在目標控制器中根據(jù)url信息,獲取跳轉前控制器的scheme,從而得到跳轉回去的url.

class SessionViewController: UIViewController {

 //接收數(shù)據(jù)
 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開發(fā)者們有所幫助,如果有疑問大家可以留言交流。

相關文章

  • XCode編譯速度慢的處理方法

    XCode編譯速度慢的處理方法

    本文給大家介紹的是在IOS開發(fā)中XCode編譯速度慢的3種解決辦法,十分的實用,有需要的小伙伴可以參考下。
    2015-06-06
  • IOS 圖片存放3種方式的實現(xiàn)

    IOS 圖片存放3種方式的實現(xiàn)

    這篇文章主要介紹了IOS 圖片存放3種方式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • 如何用IOS調用WebService(SOAP接口)

    如何用IOS調用WebService(SOAP接口)

    這篇文章主要介紹了如何用IOS調用WebService(SOAP接口),需要的朋友可以參考下
    2015-07-07
  • iOS10 適配以及Xcode8配置總結

    iOS10 適配以及Xcode8配置總結

    這篇文章主要介紹了iOS10 適配以及Xcode8配置總結的相關資料,本文通過圖文并茂的形式給大家介紹,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • iOS自定義相機功能

    iOS自定義相機功能

    這篇文章主要為大家詳細介紹了iOS自定義相機功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • IOS 開發(fā)之對象為空的判斷(nil、null)詳解

    IOS 開發(fā)之對象為空的判斷(nil、null)詳解

    這篇文章主要介紹了IOS 開發(fā)之對象為空的判斷(nil、null)詳解的相關資料,需要的朋友可以參考下
    2017-02-02
  • ios UITableView 自定義右滑刪除的實現(xiàn)代碼

    ios UITableView 自定義右滑刪除的實現(xiàn)代碼

    這篇文章主要介紹了ios UITableView 自定義右滑刪除的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 淺析iOS中的淺拷貝和深拷貝(copy和mutableCopy)

    淺析iOS中的淺拷貝和深拷貝(copy和mutableCopy)

    ios提供了copy和mutablecopy方法,顧名思義,copy就是復制了一個imutable的對象,而mutablecopy就是復制了一個mutable的對象。本文給大家介紹iOS中的淺拷貝和深拷貝(copy和mutableCopy) ,感興趣的朋友一起看看吧
    2016-04-04
  • iOS中如何判斷當前網絡環(huán)境是2G/3G/4G/5G/WiFi

    iOS中如何判斷當前網絡環(huán)境是2G/3G/4G/5G/WiFi

    這篇文章主要給大家介紹了關于iOS中如何判斷當前網絡環(huán)境是2G/3G/4G/5G/WiFi的相關資料,文中通過示例代碼介紹的非常詳細,對各位iOS開發(fā)者們具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • IOS中的target action控件的實現(xiàn)

    IOS中的target action控件的實現(xiàn)

    這篇文章主要介紹了IOS中的target action控件的實現(xiàn)的相關資料,這里提供實現(xiàn)target action的簡單實例幫助大家學習理解該如何實現(xiàn),需要的朋友可以參考下
    2017-08-08

最新評論

城市| 平阴县| 进贤县| 丹寨县| 浪卡子县| 亚东县| 金昌市| 崇阳县| 慈利县| 灌南县| 西乡县| 额济纳旗| 镇雄县| 山阴县| 高安市| 台中县| 南靖县| 凤山县| 米泉市| 若羌县| 尼木县| 东莞市| 鄱阳县| 海南省| 蒲江县| 建始县| 墨竹工卡县| 潜山县| 调兵山市| 轮台县| 政和县| 丰镇市| 德钦县| 全南县| 兰州市| 柳江县| 博野县| 中阳县| 虎林市| 余姚市| 洱源县|