iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0
Software Development

挑戰 30天內送審一支APP 系列 第 14

UIAlertController 與 tableview 之互動 (四)( D day + 13 )

  • 分享至 

  • xImage
  •  

昨天新加了” Check-in “ 的功能,今天來做一個”取消check-in” 的 功能
我們可以概略的了解整個流程 :

  • 先宣告一個陣列來記錄 cell 是否有被 Check-in
var restaurantIsVisited = Array(repeating:false,count:(21))
  • tableView(_tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath), cellForRowAt indexPath: IndexPath)
    中先檢查 array 中的 cell 是否有被 Check-in?

true -> checkmark
false -> none

//Reflash and update the checkmark
            if restaurantIsVisited[indexPath.row] {
                cell.accessoryType = .checkmark
            } else {
                cell.accessoryType = .none
            }
  • tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 中將” Check-in “的 選單以及動作加入 menu
    當 user 點選” Check-in ”後,系統會在畫面右方加上 checkmark 並且在 restaurantIsVisited 改變對應的布林函數。
// add check-in cell
            let checkInAction = UIAlertAction(title:"Check in", style: .default , handler:
            {
                (action:UIAlertAction!) -> Void in              
                let cell = tableView.cellForRow(at: indexPath)
                cell?.accessoryType = .checkmark                
                self.restaurantIsVisited[indexPath.row] = true
            })
            optionMenu.addAction(checkInAction)

了解整個流程後可以發現,前置作業都已經差不多,就差把 cancelCheckIn 加入 menu 選單

// add check-in cancel cell
            let cancelCheckInAction = UIAlertAction(title:"Cancel Check in", style: .default , handler:
            {
                (action:UIAlertAction!) -> Void in
                
                let cell = tableView.cellForRow(at: indexPath)
                cell?.accessoryType = .none
                
                self.restaurantIsVisited[indexPath.row] = false
                
            })
            optionMenu.addAction(cancelCheckInAction)

這樣就可以了

https://ithelp.ithome.com.tw/upload/images/20180102/201076986cgcZRxjON.png


上一篇
UIAlertController 與 tableview 之互動 (三)( D day + 12 )
下一篇
如何刪除一個列 (w/ UITableViewDataSource) ( D day + 14 )
系列文
挑戰 30天內送審一支APP 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言