gpt4 book ai didi

ios - Swift 自定义 UITableViewCell 不显示数组中的数据

转载 作者:行者123 更新时间:2023-11-28 12:32:36 25 4
gpt4 key购买 nike

我是 Swift 和 iOS 开发的新手。我正在尝试创建自定义 UITableViewCell。我在 UIViewController 内的 UITableView 之上的主 Storyboard中创建了单元格。当我加载其中一个默认单元格时,我能够用数据填充它。但是,现在我使用的是自定义单元格,我无法让任何数据出现在表格中。我浏览了互联网上发布的各种教程和问题,但我无法弄清楚为什么它不起作用。任何帮助将不胜感激。

这是我为 tableview 所在的 UIViewController 编写的代码。

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet var tableView: UITableView!
var name = ["Thinh", "Nhut", "Truong", "Tuyet", "Hoai", "Hoang", "NSHipster", "iOS Developer Tips", "Jameson Quave", "Natasha The Robot", "Coding Explorer", "That Thing In Swift", "Andrew Bancroft", "iAchieved.it", "Airspeed Velocity"]
var ngaysinh = ["10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991", "10/10/1991"]
var namsinh = ["1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991", "1991"]


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return name.count
}

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)


public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell

cell.hoten.text = name [indexPath.row]
cell.ngaysinh.text = ngaysinh [indexPath.row]
cell.namsinh.text = namsinh [indexPath.row]

return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.deselectRowAtIndexPath(indexPath, animated: true)

let row = indexPath.row
print(name[row])
print(ngaysinh[row])
print(namsinh[row])
}


}

这是 CustomCell 类:

import UIKit

class CustomCell: UITableViewCell {

@IBOutlet weak var hoten: UILabel!
@IBOutlet weak var ngaysinh: UILabel!
@IBOutlet weak var namsinh: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)

// Configure the view for the selected state
}

最佳答案

执行以下操作:

  1. 检查单元格和类名的拼写错误
  2. 检查UITableview的delegate和datasource是否正确绑定(bind)
  3. 如果您将 xib 用于 TableViewCell,则在 VDL 中注册您的 xib

注意:1.在as之间留一个空格和 customCell像这样as! CustomCell .如果你声明它对 iOS 更好像这样的可变单元格 let cell : CustomCell = ..........因为在这种情况下 x 代码知道你的变量类型。 [可能有时它不会产生冲突,但它不是编码的良好实践]。

2 .可能更改您的 tableview socket 名称 @IBOutlet var tableView: UITableView!任何其他名称因为tableView如果您使用相同的变量,那么它已经在 iO 所采用的构建名称中,那么它会覆盖并导致 x 代码发生冲突。

edit

而不是 self.tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as!CustomCell从行中删除 self 因为您没有将 tableView 出队对象,在这里您只需要将 cellForRow 的参数出队即可方法。

使用下面的代码:

let cell : CustomCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CustomCell

Solution

使用下面的演示图像绑定(bind)您的 delegatesdatasource来自 storyboard ,我在执行此操作后添加了输出,请检查。

演示图片

enter image description here

您项目的输出:

enter image description here

关于ios - Swift 自定义 UITableViewCell 不显示数组中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41711255/

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