iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
1
Mobile Development

iOS App初心者的30天試鍊系列 第 28

Day28:如何使用unwind segue 將表格選擇結果回傳

  • 分享至 

  • xImage
  •  

在昨天我們談完Day27:下拉放大圖片(stretchable)的scroll view後,今天我們來聊聊

如何使用unwind segue 將表格選擇結果回傳,使用iOS App時,我們常會看到一些

表格型式的App,當你點選某個cell後,會返回前一頁,並將結果回傳,

像Calendar 及 Clock App就是常見的例子

實做步驟

1.建立Xcode新專案,並在MainStoryBoard按+ , 新增一個Navigation Controller及

二個Table View Controller

https://ithelp.ithome.com.tw/upload/images/20191005/20112182v6MBy02pWK.png

2.新增繼承UITableViewController的EditTodoListTableViewController及

FrequencyTableViewController。

https://ithelp.ithome.com.tw/upload/images/20191005/20112182owImlj9NgD.png

3.New Action頁面的類別設為EditTodoListTableViewController(Static cells),

Repeat頁面的類別設為FrequencyTableViewController。

https://ithelp.ithome.com.tw/upload/images/20191005/20112182q7K3YlAQAF.png

https://ithelp.ithome.com.tw/upload/images/20191005/20112182zHG5Ud35ka.png

4.以Unwind Segue 返回到前一頁並傳遞資料 , 在 EditTodoListTableViewController

定義 unwind segue 連結的 function unwindToEditTodoList(segue:)。

@IBAction func unwindToEditEvent(segue: UIStoryboardSegue) {
        if let sourceViewController = segue.source as? FrequencyTableViewController {
            repeatFrequencyLabel.text = sourceViewController.selectedFrequency
        }
    }

5.透過FrequencyTableViewController 的 property selectedFrequency 取得重覆的頻率。

在 storyboard 裡從FrequencyTableViewController 的 cell 連線到上方紅色的 Exit,

選擇 Selection Segue 下的 unwindToEditTodoListWithSegue:。

https://ithelp.ithome.com.tw/upload/images/20191005/20112182jX8FRbToO8.png

6.在FrequencyTableViewController 的 function prepare 裡設定使用者選擇的頻率。

(FrequencyTableViewController.swift)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
       
        if let cell = sender as? UITableViewCell, let indexPath = tableView.indexPath(for: cell) {
            selectedFrequency = frequencies[indexPath.row]
        }
    }
    

7.當使用者點選某個 cell 選擇重覆的頻率時,將觸發 unwind segue,此時將呼叫

FrequencyTableViewController 的 function prepare,我們在裡面設定使用者選擇的頻率。

 @IBAction func unwindToEditEvent(segue: UIStoryboardSegue) {
        if let sourceViewController = segue.source as? FrequencyTableViewController {
            repeatFrequencyLabel.text = sourceViewController.selectedFrequency
        }
    }

8.經由 unwind segue 從FrequencyTableViewController 返回

EditTodoListTableViewController時,我們得到使用者選擇的重覆頻率。

https://ithelp.ithome.com.tw/upload/images/20191005/20112182grsgXZVjp7.png

https://ithelp.ithome.com.tw/upload/images/20191005/20112182EEmTgcPIJ3.png

https://ithelp.ithome.com.tw/upload/images/20191005/20112182iEsbcgFAnc.png

Yes


上一篇
Day27:下拉放大圖片(stretchable)的 scroll view
下一篇
Day29:今天來做個訂餐/訂飲料App
系列文
iOS App初心者的30天試鍊31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言