在昨天我們談完Day27:下拉放大圖片(stretchable)的scroll view後,今天我們來聊聊
如何使用unwind segue 將表格選擇結果回傳,使用iOS App時,我們常會看到一些
表格型式的App,當你點選某個cell後,會返回前一頁,並將結果回傳,
像Calendar 及 Clock App就是常見的例子
1.建立Xcode新專案,並在MainStoryBoard按+ , 新增一個Navigation Controller及
二個Table View Controller
2.新增繼承UITableViewController的EditTodoListTableViewController及
FrequencyTableViewController。
3.New Action頁面的類別設為EditTodoListTableViewController(Static cells),
Repeat頁面的類別設為FrequencyTableViewController。
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:。
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時,我們得到使用者選擇的重覆頻率。