繁体   English   中英

自定义 xib 单元格未出现在 UITableView swift 上

[英]Custom xib cells are not appearing on UITableView swift

我的细胞没有出现。 我做了:

  • 检查数据源和委托是否已连接

  • 检查我的自定义单元格标识符名称和 class 是否正确

我没有做的事情:我正在为自动布局而苦苦挣扎,所以我决定不这样做。

我的应用程序正在加载正确数量的单元格,但未注册单元格。

我的代码:

import UIKit

class WelcomeViewController: UITableViewController, NetworkManagerDelegate {

    private var networkManager = NetworkManager()
    private var infoForCells = [Result]()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.register(UINib(nibName: "ImageViewCell", bundle: nil), forCellReuseIdentifier: "imageCell")
        
        networkManager.delegate = self
        networkManager.fetchNews()
        
        
        
        
    }


    // MARK: - Table view data source
    override func numberOfSections(in tableView: UITableView) -> Int {

        return 1
    }
    

    
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return infoForCells.count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
         guard let cell = tableView.dequeueReusableCell(withIdentifier: "imageCell", for: indexPath) as? ImageViewCell else{
            return UITableViewCell(style: .default, reuseIdentifier: "cell")
        }

        
        let cellIndex = infoForCells[indexPath.row]

        
        cell.titleForImage.text = cellIndex.alt_description
        print(cell.titleForImage ?? "lol")
//        if let image = cellIndex.urlToImage {
//            cell.imageForArticle.load(url: image)
//        }
        
        return cell
        
    }
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    }
    
    func didUpdateNews(root: Root) {
        infoForCells = root.results

     
    }
    
}

重新加载表

func didUpdateNews(root: Root) {
  infoForCells = root.results
  tableView.reloadData()
}

除了Sh_Khan回答,您还可以收听infoForCells属性的更新

private var infoForCells = [Result]() {
    didSet {
        DispatchQueue.main.async { [weak self] in
             self?.tableView.reloadData()
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM