iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
0
自我挑戰組

iOS 新手開發的大小事系列 第 28

Day 28: 轉場到下一個 View

前言

今天要介紹的是轉換到下一個 view 的方式,之前不了解的時候,就遇過重複使用到兩個方法,畫面跳轉兩次的情形,藉由這次把看過學過的方式整理一下,就列出了三種方法都可以由前一個視圖轉到下一個視圖。


進入主題

此篇將介紹三種方法,由 view 1 進入到 view 2

  • 直接在 Storyboard 由 Item 拉 Segue 到目的地
  • 利用程式碼 Perform Segue 到目的地
  • 直接用程式碼進目的地(不使用 Segue)

這三種方法沒有誰優誰劣,只是在不同狀況下考慮能使用的方式會不太一樣,本篇範例都利用按下按鈕的方式作切換,例如:如果是使用 TableView 不同的 cell 需要切換到不同的頁面,則需要使用程式碼控制,第一個簡單又直覺的方式就顯得不靈活了。

直接在 Storyboard 由 Item 拉 Segue 到目的地

第一種方式很簡單且直覺,在第一個頁面中名為 Next View 的 UIButton 按住 control 直接拖拉到第二頁就會出現 Action Segue 的選項,則選著第一個 show,則完成。

利用程式碼 Perform Segue 到目的地

第二種方式是先建立 Segue,並為 Segue 輸入專屬的 Identifier,接著在第一個 ViewControll 中建立 UIButton 的 Action,利用方法 performSegue(withIdentifier:, sender:) 完成頁面轉換。

Step 1: 建立由第一個 view 到第二個 view 的 Segue

Step 2: 為 Segue 命名

Step 3: 建立 UIButton 的 Action

@IBAction func gotoSecondView(_ sender: UIButton) {
        performSegue(withIdentifier: "gotoSecondViewSegue", sender: nil)
    }

直接用程式碼進目的地(不使用 Segue)

此方法需要先為目的地 Storyboard ID 給予名稱,接著再利用程式碼,使按鈕按下時切換到第二個畫面。

Step 1: 給予目的地 Storyboard ID 名稱

Step 2: 有兩種方式的寫法都可以執行到目的地
方法一:

@IBAction func gotoSecondView(_ sender: UIButton) {
        let vc = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
        present(vc, animated: true, completion: nil)
    }

方法二:

@IBAction func gotoSecondView(_ sender: UIButton) {
        let vc = storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
        show(vc, sender: nil)
    }

上一篇
Day 27: iOS View Controller Life Cycle (生命週期)
下一篇
Day 29: 兩個 View Controllers 之間傳值 -1
系列文
iOS 新手開發的大小事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言