iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Mobile Development

IOS新手之旅系列 第 3

IOS新手之旅 Day3:碼表(2)

  • 分享至 

  • xImage
  •  

還記得昨天的進度嗎?今天要把另外一個Button的功能也完成,同時處理剩下的顯示部分以及一些問題。

記錄與重置

這裡的功能是將按下Button那瞬間將時間存放在陣列裡,只要狀態沒有改變就能一直存進新的值,同時更新TableView裡的內容。

當狀態改變的時候,按下Button會將一切重置。

    @IBAction func lapOrReset(_ sender: Any) {
        if lapStauts{
            stopWatchs.insert(stopWatchLabel.text!, at: 0)
            lapTableView.reloadData()
        }else{
            stopWatchs.removeAll()
            lapTableView.reloadData()
            
            milliSeconds = 0
            calcuMilSec = 0
            calcuSec = 0
            calcuMin = 0
            calcuHor = 0
            
            stopWatchLabel.text = "00:00:00:00"
            
            startStauts = true
            lapStauts = false
            
            lapButton.setTitle("Lap", for: .normal)
            lapButton.setTitleColor(.black, for: .normal)
            lapButton.isEnabled = false
        }
    }

記錄的結果

這個函式會一個個讀取陣列裡的內容並將其放進TableViewCell裡,然後顯示出來。

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! StopWatchTableViewCell
        
        cell.lapLabel.text = "Lap \(stopWatchs.count - indexPath.row)"
        cell.timeLabel.text = "\(stopWatchs[indexPath.row])"
        
        return cell
    }

優化

到這裡整個碼表的功能應該都完成了,然而在測試時發現在計時途中滑動TableView時會導致暫停計時。

解決辦法是在呼叫Timer的下一行打上下面的程式,這樣就能解決了。

RunLoop.current.add(timer, forMode: .common)

那麼整個碼表算是完成了,明天來做跟碼表差不多但是麻煩一點的計時器。


上一篇
IOS新手之旅 Day2:碼表(1)
下一篇
IOS新手之旅 Day4:計時器(1)
系列文
IOS新手之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言