swift-tableView

swift中tableViewcell的配置有两种方式

  • 需要注册cell,注册cell带forIndexPath
    var tableView : UITableView!
    static let cellId = "cellIdl"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
        
        
        tableView = UITableView.init(frame: self.view.bounds, style: .plain)
        tableView.delegate = self
        tableView.dataSource = self
        view.addSubview(tableView)
        //cell注册
        tableView.register(marketCell.self, forCellReuseIdentifier: MarketViewController.cellId)
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {        
        let cell = tableView.dequeueReusableCell(withIdentifier: MarketViewController.cellId, for: indexPath) as! marketCell
        
        return cell
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 50
    }

  • 不用注册cell
    var tableView : UITableView!    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
        
        tableView = UITableView.init(frame: view.bounds, style: .plain)
        tableView.delegate = self
        tableView.dataSource = self
        view.addSubview(tableView)
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
          var cell = tableView.dequeueReusableCell(withIdentifier: "cellIdl")
          if cell == nil {
              cell = UITableViewCell.init(style: .default, reuseIdentifier: "cellIdl")
           }
          return cell!        
        return cell
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 50
    }

注册的方法会自动帮我们完成分配新单元格这个工作 而非注册则需要我们自己手动创建新的单元格
1.如果注册,当标识符为identifier 的Cell队列中没有可复用的cell时,系统会自动创建该类型的cell。
2.如果没有注册,需要判定是否有无可复用的cell,并手动新建一个cell。
注册后就不用管cell是否需要新建了

tip: OC中没有注意这个点。。。。好像oc中也有这个规则,奇奇怪怪

你可能感兴趣的:(swift-tableView)