我编写了一个在UITableView
中添加一个单元格的函数。
numberOfRowsInSection
有效,但cellForRowAt
不起作用。
class ShopMenuViewCell: UITableViewCell {
@IBOutlet weak var menuTableView: UITableView!
var menuPrice: MenuPrice!
override func awakeFromNib()
{
super.awakeFromNib()
}
}
extension ShopMenuViewCell
{
func setView()
{
self.menuTableView.delegate = self
self.menuTableView.dataSource = self
self.menuTableView.regCells(cells: ["ShopMenuInformationCell"])
DispatchQueue.main.async
{
self.menuTableView.reloadData()
}
}
}
extension ShopMenuViewCell : UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "ShopMenuInformationCell", for: indexPath) as? ShopMenuInformationCell,
let menu = self.menuPrice,
let name = menu.name,
let price = menu.amt else { return ShopMenuInformationCell() }
return cell
}
}
在ShpMenuInformationCell.swift中
class ShopMenuInformationCell: UITableViewCell
{
@IBOutlet weak var containerView: UIView!
@IBOutlet weak var shopNameLabel: UILabel!
@IBOutlet weak var menuNameLabel: UILabel!
@IBOutlet weak var priceLabel: UILabel!
override func awakeFromNib()
{
super.awakeFromNib()
}
}
我看到了添加ViewController
的答案,但是我不知道该怎么办,因为它不是情节提要。 (.xib)
我认为这是因为我在UITableViewCell
类中添加了UITableViewCell
。
你知道为什么吗?
答案 0 :(得分:1)
请尝试以下代码:
class ShopMenuViewCell: UITableViewCell
{
@IBOutlet weak var menuTableView: UITableView!
var menuPrice: MenuPrice!
override func awakeFromNib()
{
super.awakeFromNib()
}
fun setUpTable() {
self.menuTableView.regCells(cells: ["ShopMenuInformationCell"])
self.menuTableView.delegate = self
self.menuTableView.dataSource = self
self.menuTableView.reloadData()
}
}
并从 ShopMenuViewCell 中调用函数 setUpTable()作为 cell.setUpTable()
答案 1 :(得分:1)
我有大约5天的问题,找到了解决方案!
第一个参考站点:乔尔的答案cellForRowAtIndexPath: not called
第二参考站点:Paolo的答案 Swift: UITableViewCell rowheight
当我添加另一种TableCell时,所讨论的单元格的垂直尺寸很小。
所以我在重新加载数据之前增加了单元格的RowHeight(frame.height)的大小,并且它是固定的!
当前,cellforrowat安全运行。您的答案对结果很有帮助。
答案 2 :(得分:0)
尝试以下代码:
解决方案1
class ShopMenuViewCell: UITableViewCell {
@IBOutlet weak var menuTableView: UITableView! {
didSet {
self.menuTableView.regCells(cells: ["ShopMenuInformationCell"])
self.menuTableView.delegate = self
self.menuTableView.dataSource = self
}
}
}
解决方案2:,请检查Anand Verma答案