跳轉至應用程序中某一界面(Swift)

  • 1.上一篇寫了應用程序的跳轉,然后想寫一個具體實現的功能
  • 需求:從一個應用程序跳轉至另一個控制器的某一界面
Demo.gif
  • 思路:獲取URL再跳轉至應用程序,然后再根據一個ID 讓Segue跳轉至不同界面
  • 問題一 : 從哪里獲取URL?
  • 答:從AppDelegate中的代理方法可以獲取
 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
}

正式開始項目

  • 1.創(chuàng)建一個項目,并且做好相關配置
Snip20161119_1.png
  • 2.抽出一個跳轉方法
private func openURL(_ URLString : String) {
        
        // 1.獲取對應應用程序的URL
        guard let url = URL(string: URLString) else { return }
        
        // 2.判斷URL是否可以打開
        guard UIApplication.shared.canOpenURL(url) else { return }
        
        // 3.打開對應的應用程序
        UIApplication.shared.openURL(url)
    }
  • 1."打開微信"按鈕
@IBAction func openWechat() {
        openURL("wechat://")
    }
  • 2."打開微信好友界面"按鈕
 @IBAction func openWeChatSession() {
        openURL("wechat://session")
    }
  • 3."打開微信朋友圈界面"按鈕
@IBAction func openWeChatFriend() {

        openURL("wechat://timeline")
    }

!!最重要的是:配置info.plist

Snip20161119_2.png

第一個項目就完成了,現在開始第二個項目

咳咳,首先搭建好界面

為了方便,我就在Main.storyboard中搭建了

Snip20161119_3.png
Snip20161119_4.png

綁定Segue的ID,通過segue跳轉


Snip20161119_5.png
Snip20161119_6.png

前面說過在ViewController中那么到url,因為我們要通過傳過來的url來判斷跳轉至哪個界面,所以直接來到AppDelegate中

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        
        //首先,獲取URL對應的URLString
        //因為獲取的url是URL類型的,所以我們還需要將其轉為String類型
        //absoluteString:絕對路徑的String
        let URLString = url.absoluteString 
        
        //2.進行判斷,根據不同的URL顯示不同的界面
        //我們要通過跟控制器才能跳轉至需要跳轉的界面,所以現在要獲取根控制器

        //獲取首頁控制器
        let rootNav = window?.rootViewController as? UINavigationController

        guard let homeVC = rootNav?.childViewControllers.first else {return false}

        //3.進行判斷,根據不同的URL顯示不同的界面
        //contains方法是判斷是否包含某一字符串
        if URLString.contains("session") { 
            homeVC.performSegue(withIdentifier: "homeSession", sender: nil)
        } else if URLString.contains("timeline"){
            homeVC.performSegue(withIdentifier: "homeTimeline", sender: nil)
        }
                return true
    }

另外一個重點來了:(敲黑板)

  • 剛創(chuàng)建的項目沒有配置URL Scheme是沒有的,需要自己配置,而配置方法如下
Snip20161119_8.png

然后就可以運行了

這是運行圖
雖然功能是實現了
有木有覺得很奇怪? 一般進入到某一界面然后點擊返回,應該是返回上一界面的
猜測:應該是每次跳轉的時候沒有回到主界面導致的
所以每次跳轉之前應該先回到主控制器

 func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        
        //1.獲取首頁控制器
        let rootNav = window?.rootViewController as? UINavigationController
        //回到主控制器
        //在swift中popToRootViewController這個方法有個返回值,但是我們又用不上這個返回值,所以可以用一個占位符 _ 來接收
        _ = rootNav?.popToRootViewController(animated: false)
        
        guard let homeVC = rootNav?.childViewControllers.first else {return false}
        
        
        //2.獲取URL對應的URLString
        let URLString = url.absoluteString
        
        //3.進行判斷,根據不同的URL顯示不同的界面
        if URLString.contains("session") {
            homeVC.performSegue(withIdentifier: "homeSession", sender: nil)
        } else if URLString.contains("timeline"){
            homeVC.performSegue(withIdentifier: "homeTimeline", sender: nil)
        }
        return true
    }

現在應該沒問題了

Demo3.gif

另外即使應用程序處于后臺,還是關閉狀態(tài)都可以正常執(zhí)行

Demo5.gif

好了,我的分享完了,睡覺咯~~~
我的個人博客 : www.summersam.com
個人微信 : bilibili9310
個人QQ : 276388000
歡迎一起交流,一起學習

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末妻往,一起剝皮案震驚了整個濱河市草冈,隨后出現的幾起案子,更是在濱河造成了極大的恐慌勇劣,老刑警劉巖随夸,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件九默,死亡現場離奇詭異,居然都是意外死亡宾毒,警方通過查閱死者的電腦和手機荤西,發(fā)現死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伍俘,“玉大人邪锌,你說我怎么就攤上這事“” “怎么了觅丰?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妨退。 經常有香客問我妇萄,道長,這世上最難降的妖魔是什么咬荷? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任冠句,我火速辦了婚禮,結果婚禮上幸乒,老公的妹妹穿的比我還像新娘懦底。我一直安慰自己,他們只是感情好罕扎,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布聚唐。 她就那樣靜靜地躺著,像睡著了一般腔召。 火紅的嫁衣襯著肌膚如雪杆查。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天臀蛛,我揣著相機與錄音亲桦,去河邊找鬼崖蜜。 笑死,一個胖子當著我的面吹牛客峭,可吹牛的內容都是我干的豫领。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼桃笙,長吁一口氣:“原來是場噩夢啊……” “哼氏堤!你這毒婦竟也來了?” 一聲冷哼從身側響起搏明,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤鼠锈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后星著,有當地人在樹林里發(fā)現了一具尸體购笆,經...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年虚循,在試婚紗的時候發(fā)現自己被綠了同欠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡横缔,死狀恐怖铺遂,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情茎刚,我是刑警寧澤襟锐,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站膛锭,受9級特大地震影響粮坞,放射性物質發(fā)生泄漏。R本人自食惡果不足惜初狰,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一莫杈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧奢入,春花似錦筝闹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柴我,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扩然,已是汗流浹背艘儒。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人界睁。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓觉增,卻偏偏與公主長得像,于是被迫代替她去往敵國和親翻斟。 傳聞我的和親對象是個殘疾皇子逾礁,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內容