gpt4 book ai didi

iOS TableView 自定义单元格不显示任何内容

转载 作者:搜寻专家 更新时间:2023-11-01 06:00:38 24 4
gpt4 key购买 nike

我是 iOS 和 Swift 的新手,我想通过创建一个简单的 Todo 应用来学习一些东西。我遇到的问题是,无论我如何实现代码(按照多个教程)和 Storyboard ,数据都不会显示,自定义单元格也不会自定义(即使我已经自定义,它看起来也正是默认单元格的样子它)。我已经连接了我的 delegatedataSource

编辑:我已经分配了重用标识符

TodosView.swift

import UIKit

class TodosView: UIViewController {
@IBOutlet weak var todosTable: UITableView!

var todos: [Todo] = []

override func viewDidLoad() {
super.viewDidLoad()
todosTable.delegate = self
todosTable.dataSource = self

self.addTodo()
}

func addTodo() {
let todo1 = Todo(text: "My first todo")
let todo2 = Todo(text: "My second todo")

todos = [todo1, todo2]
}
}

extension TodosView: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return todos.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let todo = todos[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "TodoCell") as! TodoCell

cell.setTodo(todo: todo)

return cell
}
}

TodoCell.swift

import UIKit

class TodoCell: UITableViewCell {
@IBOutlet weak var todoText: UILabel!

func setTodo(todo: Todo) {
todoText.text = todo.text
}
}

Todo.swift

import Foundation

struct Todo {
var text: String
var done: Bool

init(text: String, done: Bool = false) {
self.text = text
self.done = done
}
}

最佳答案

我成功地使用你的代码成功生成了你的 Todo 行(调用 addTodo() 后我没有reloadData());

enter image description here

在证明您的代码确实有效之后,这让我相信您的 Storyboard 设置中的某处存在问题,比您的代码本身存在更多问题。几点建议:

验证您的自定义单元格是否被子类化为 TodoCell。您可以通过在 Interface Builder 中单击您的 TodoCell 来执行此操作,并在 Identity Inspector 选项卡中验证您已将此设置为 TodoCell:

enter image description here

这可能不是问题,因为如果您的单元格未正确子类化,您的应用很可能会崩溃。

确认您已在 Interface Builder 中设置单元标识符。再次单击 Interface Builder 中的 TodoCell,转到 Attributes Inspector 选项卡,并验证标识符是否设置为 TodoCell:

enter image description here

此外,请确保您实际上已将 tableView 和 todoText UILabel 连接到您的代码。我看到你有这些项目的@IBOutlets,但如果你是从教程中复制和粘贴的,则可能你输入了这些项目但从未真正连接过它们。应该填写 tableView 和 UILabel 的 IBOutlet 旁边的灰色圆圈,如下所示:

enter image description here

如果它是空的,您可能没有连接,这可以解释问题。同样,我逐字复制并粘贴了您的代码,并按照上述建议进行了设置;我不相信 reloadData() 或设置部分的数量会帮助解决这个问题(因为你的代码没有它们,它正在为我工​​作)。

关于iOS TableView 自定义单元格不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52397816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com