【问题标题】:CollectionView is blank集合视图为空白
【发布时间】:2021-06-18 18:27:07
【问题描述】:

我试图在每个单元格都有 questionLabel 的 collectionview 上显示问题,但我无法在 collectionViewCell 上看到问题,它只是一个空白屏幕。我想知道我在以下实现中缺少什么。

读取数据

class ReadData {
   
  static let shared = ReadData()

  let questionsData: String
   
    private init() {
      self.questionsData = """
           {
              "questions" :[
                      {
                        "text" : "What is your name?",
                        "type" : "string"
                      },
                      {
                        "text" : "What is your age?",
                        "type" : "integer"
                      }
              ]
           }
         """
        }
}

QuestionCollectionViewCell

import UIKit

final class QuestionCollectionViewCell: UICollectionViewCell {
    
  @IBOutlet weak var questionLbl: UILabel!
  @IBOutlet weak var answerTF: UITextField!
  
  @IBAction func nextButtonTapped(_ sender: Any) {
    print("Hi")
  }
}

QuestionsViewController

import UIKit

class QuestionsViewController: UIViewController {

  @IBOutlet weak var questionCollectionView: UICollectionView!
  
  var decodedData = [Questions]()
  
  override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    setupCollectionView() 
    let readData = ReadData.shared.questionsData
    let jsonData = Data(readData.utf8)
    let decodedData = try? JSONDecoder().decode(Questions.self, from: jsonData)
    // I could see the data in the terminal
    print(decodedData)
    questionCollectionView.reloadData()
  }
  
  func setupCollectionView() {
    questionCollectionView.delegate = self
    questionCollectionView.dataSource = self
  }
  
}

extension QuestionsViewController: UICollectionViewDelegate {
  
  
}

extension QuestionsViewController: UICollectionViewDataSource {
  func numberOfSections(in collectionView: UICollectionView) -> Int {
      return 1
    }
    
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
      return 3
    }
    
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
      guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "QuestionsCollectionViewCell", for: indexPath) as? QuestionCollectionViewCell
      else {
        return UICollectionViewCell()
        
      }
      // the break point hits here and collectionview cell type is QuestionCollectionViewCell
      cell.questionLbl.text = "Hi"
      return cell
    }
}

Questions.swift

import Foundation

struct Questions:Codable {
    let questions: [Question]
}

// MARK: - Question
struct Question:Codable {
    let text, type: String
}

【问题讨论】:

  • 您是否已将故事板中的自定义单元格类分配给 collectionView 单元格?

标签: swift uicollectionview


【解决方案1】:

尝试像这样为您的集合视图单元格设置非零大小。

extension QuestionsViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 60, height: 60)
    }
}

【讨论】:

  • 我加了,还是一样。
  • QuestionCollectionViewCell 是在故事板中还是它自己单独的 XIB 文件中?
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 2012-02-01
  • 1970-01-01
  • 2016-07-22
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多