首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS TableView自定义单元格没有显示任何内容

iOS TableView自定义单元格没有显示任何内容
EN

Stack Overflow用户
提问于 2018-09-18 19:59:48
回答 4查看 1.9K关注 0票数 1

我是iOS和Swift的新手,我正在尝试通过创建一个简单的Todo应用程序来学习一些东西。我遇到的问题是,无论我如何实现代码(遵循多个教程)和故事板,数据都不会显示,定制的单元格也不是自定义的(尽管我已经定制了默认单元格)。我已经连接了我的delegatedataSource

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

TodosView.swift

代码语言:javascript
运行
AI代码解释
复制
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

代码语言:javascript
运行
AI代码解释
复制
import UIKit

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

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

Todo.swift

代码语言:javascript
运行
AI代码解释
复制
import Foundation

struct Todo {
    var text: String
    var done: Bool

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

回答 4

Stack Overflow用户

发布于 2018-09-18 20:21:01

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

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

验证您的自定义单元格被子类为TodoCell。您可以通过在Interface中单击您的TodoCell来完成这一任务,在Identity检查选项卡中,验证您是否将此设置为TodoCell:

这可能不是问题,因为你的应用程序更有可能崩溃,如果你的细胞没有正确的子类。

验证已在Interface 中设置了单元格标识符。再次单击Interface中的TodoCell,转到Attributes检查选项卡,并验证标识符设置为TodoCell:

另外,一定要确保您已经将tableView和todoText UILabel实际连接到代码中。我看到您在这些项目上有@IBOutlet,但是如果您是从教程中复制和粘贴的,那么您可能输入了这些条目,但实际上从未将它们连接起来。对于IBOutlet和tableView,应该填充tableView和UILabel旁边的灰色循环,如下所示:

如果它是空的,您可能没有连接,这可以解释这个问题。再次,我逐字复制和粘贴了您的代码,并根据上面的建议设置了内容;我不认为reloadData()或设置节数会帮助解决这个问题(因为您的代码没有它们,而且它正在处理我的部分)。

票数 6
EN

Stack Overflow用户

发布于 2018-09-18 20:13:39

更新数据源后,需要重新加载表视图:-

代码语言:javascript
运行
AI代码解释
复制
func addTodo() {
    let todo1 = Todo(text: "My first todo")
    let todo2 = Todo(text: "My second todo")
    todos = [todo1, todo2]
    todosTable.reloadData()
}

编辑我还注意到,通过查看JWC注释,您没有实现numberOfSection方法,因此还必须添加节委托方法的数量。

票数 0
EN

Stack Overflow用户

发布于 2018-09-18 21:06:24

在创建array之后,要将数据添加到tableView中。

更改这一行:

代码语言:javascript
运行
AI代码解释
复制
var todos: [Todo] = []

代码语言:javascript
运行
AI代码解释
复制
var todos: [Todo]! {
    didSet {
        self.todosTable.reloadData()
    }
}

numberOfRowsInSection中:

代码语言:javascript
运行
AI代码解释
复制
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    guard (todos != nil) else {
        return 0
    }
    return todos.count
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52397816

复制
相关文章
java命令不是内部或外部命令_运行cmd不是内部或外部命令
在生成Java头文件时报错,经查询发现新版的Java不使用javah的命令了,而是使用javac -h 用法:
全栈程序员站长
2022/11/08
1K0
win10配置java环境变量,解决javac不是内部或外部命令等问题
1.安装JDK,安装过程中可以自定义安装目录等信息,例如选择安装目录为D:\java\jdk1.5.0_08;
bear_fish
2018/09/19
4.6K0
win10配置java环境变量,解决javac不是内部或外部命令等问题
pytest重试_pytest不是内部或外部命令
要重新运行所有测试失败的用例,请使用--reruns命令行选项,并指定要运行测试的最大次数:
全栈程序员站长
2022/09/16
5680
nodejs在cmd提示不是内部或外部命令解决方法
今天用cmd安装个库,结果发现node不是内部命令,于是搜索了下解决方法,发现原来我上次重装nodejs换了个安装位置,path环境变量忘改了. 找到变量值中node的安装地址,比如C:develop\nodejs,如果不是这个地址改成现在新的安装的地址,然后保存,重新打开cmd,输入 node -v 查看版本号,就会发现一切正常啦!当然这只针对于安装过node的一些情况.
吴裕超
2022/05/10
1.9K0
nodejs在cmd提示不是内部或外部命令解决方法
win10配置java环境变量,解决javac不是内部或外部命令等问题「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140138.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/24
6980
win10配置java环境变量,解决javac不是内部或外部命令等问题「建议收藏」
java环境配置 | cmd命令 java正常,javac不是内部或外部命令
ava环境配置 | cmd命令 java正常,javac不是内部或外部命令 对Java一窍不通的初学者,正准备准备参照着网上的文档配置Java环境。费了九牛二虎之力是装好了,环境也配好了。cmd窗口验证java -version显示正常,输入javac -version提示"javac不是内部或外部命令,也不是可运行的程序"。全网搜索到的信息基本一致。但是最后都没什么卵用。重装卸载N次,依然不得想要的结果。
卢衍飞
2023/02/13
7640
java环境配置 | cmd命令 java正常,javac不是内部或外部命令
telnet不是内部或外部命令怎么办[通俗易懂]
命令提示符下执行telnet,提示:’telnet’ 不是内部或外部命令,也不是可运行的程序或批处理文件。Win7,Win10系统环境下,Telnet客户端默认是关闭状态。
全栈程序员站长
2022/11/09
10.2K0
telnet不是内部或外部命令怎么办[通俗易懂]
解决 javac不是内部或外部命令等问题
1、JAVA_HOME值为: D:\Program Files\Java\jdk1.7.0_11(JDK的安装目录)
week
2018/08/24
5700
解决 javac不是内部或外部命令等问题
vue人脸识别_vue不是内部或外部命令
vue报错:无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
全栈程序员站长
2022/09/23
5220
vue人脸识别_vue不是内部或外部命令
使用xshell时显示wget不是内部或外部命令
刚才在捣鼓xshell。上面的小图标是红色的,就是我画的小红色圆圈里的,正常的时候是绿色的,如果出现红色,就说明有问题了。
纯情
2023/04/26
1.2K0
使用xshell时显示wget不是内部或外部命令
webpack的性能优化_webpack不是内部或外部命令
webpack版本过高,会出现很多问题,因此可以降低版本高度 1.可以直接覆盖原版本,全局安装可以输入`cnpm i webpack 需要降低的版本 -g,局部去掉-g即可 比如我们要降低到’3.6.0’
全栈程序员站长
2022/09/22
5040
‘java‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件「建议收藏」
配置JAVA环境变量如下: 1.下载安装jdk 2.安装完成后,右击“我的电脑”,点击“属性”; 3.选择“高级”选项卡,windows 7选择左边的“高级系统设置”,点击“环境变量”;
全栈程序员站长
2022/09/13
2.7K0
‘java‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件「建议收藏」
cmd命令ping不是内部或外部命令_ping命令次数
介绍ping命令是一个用来测试能不能与另一台主机交换数据包的命令,通常我们会用ping命令测试域名可达性。
全栈程序员站长
2022/11/08
1.8K0
电脑ping命令显示不是内部命令_cmd一直ping的命令
在cmd中用PING命令时,出现’Ping’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
全栈程序员站长
2022/09/29
2.4K0
[1200]yarn不是内部或外部命令,也不是可运行的程序
第1步:找到你刚才安装的yarn 如:C:\soft\nvm\npm\node_modules\yarn\bin
周小董
2023/10/10
1.9K0
[1200]yarn不是内部或外部命令,也不是可运行的程序
出现 “java”不是内部或外部命令,也不是可运行程序或批处理文件的问题
可能的情况就是: 安装其他程序的时候,path变量被修改了,导致java命令找不到了,这个时候只有重新在path中设置java的bin目录路径就可以了
兮动人
2021/06/11
2.3K0
出现 “java”不是内部或外部命令,也不是可运行程序或批处理文件的问题
'telnet' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  系统中的telnet客户端是关闭状态。即Win10默认没有安装telnet功能。
黑泽君
2019/02/26
2.6K0
'mysql' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
1、C:\Users\Aiyufei>mysql -h 127.0.0.1 -u root 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件。
别先生
2018/10/25
6.9K0
'mysql' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
‘vue’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
获取下载的包路径信息 npm config get prefix 将路径设置到系统环境变量
kirin
2020/06/18
6.6K0
'wepy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
在学习安装wepy创建项目的时候,开启实时编译,出现了这样的一个报错: 'wepy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
王小婷
2019/03/06
3.1K0
'wepy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

相似问题

通过分支google云平台过滤构建步骤

217

GCP云构建可选步骤

11

如何将Google Drive下载输出流保存为文件?

16

Google构建条件步骤

26

找不到工件-云构建器步骤失败(Google cloud Builder)

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档