• Swift


    Swift - UITableViewCell倒计时重用解决方案

    效果

    源码

    https://github.com/YouXianMing/Swift-Animations

    //
    //  CountDownTimerController.swift
    //  Swift-Animations
    //
    //  Created by YouXianMing on 16/9/4.
    //  Copyright © 2016年 YouXianMing. All rights reserved.
    //
    
    import UIKit
    
    class CountDownTimerController: NormalTitleViewController, UITableViewDelegate, UITableViewDataSource {
    
        var timesArray : [CellDataAdapter]!
        var tableView  : UITableView!
        var timer      : GCDTimer = GCDTimer(inQueue: GCDQueue.mainQueue)
        
        override func setup() {
            
            super.setup()
            
            // Create data source.
            timesArray = [CellDataAdapter]()
            
            func add(title title : String, countdownTime : Int) {
            
                timesArray.append(CountDownTimeCell.Adapter(data: TimeModel(title: title, countdownTime: countdownTime)))
            }
            
            add(title: "YouXianMing", countdownTime: 20034)
            add(title: "Aaron",       countdownTime: 31)
            add(title: "Nicholas",    countdownTime: 1003)
            add(title: "Quentin",     countdownTime: 394)
            add(title: "Samirah",     countdownTime: 345345)
            add(title: "Serafina",    countdownTime: 233)
            add(title: "Shanon",      countdownTime: 4649)
            add(title: "Sophie",      countdownTime: 3454)
            add(title: "Steven",      countdownTime: 54524)
            add(title: "Saadiya",     countdownTime: 235)
            
            // Create TableView.
            tableView                = UITableView(frame: (contentView?.bounds)!)
            tableView.delegate       = self
            tableView.dataSource     = self
            tableView.separatorStyle = .None
            tableView.rowHeight      = 60
            contentView?.addSubview(tableView)
    
            // Register cell.
            CountDownTimeCell.RegisterTo(tableView)
    
            // Timer event.
            weak var wself = self
            timer.event({ 
                
                for (_, dataAdapter) in wself!.timesArray.enumerate() {
                    
                    if let model = dataAdapter.data as? TimeModel {
                    
                        model.countDown()
                    }
                }
                
                DefaultNotificationCenter.PostMessageTo(NotificationEvent.CountDownTimeCellCountDown.Message())
            
                }, timeIntervalWithSeconds: 1.0)
            timer.start()
        }
        
        func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            
            return timesArray.count
        }
        
        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            
            return tableView.dequeueCellAndLoadContentFromAdapter(timesArray[indexPath.row], indexPath: indexPath)
        }
        
        func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
            
            (cell as! CustomCell).display = true
        }
        
        func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
            
            (cell as! CustomCell).display = false
        }
    }
  • 相关阅读:
    购物车
    加载网格X文件代码(Unicode版本)
    金字塔代码
    纹理贴图案例
    绘制立方体
    移动端H5开发问题(html2canvas、video、audio)
    opencvpython图像处理学习笔记1
    jmeter报错o.a.j.JMeter: Uncaught exception问题排查
    记一次测试周报
    PHP 浮点数计算精度问题
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5839799.html
Copyright © 2020-2023  润新知