【发布时间】: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 单元格?