Ios 在单元格中不工作UITable视图,但在Swift中工作节中的行数
我编写了一个函数,在Ios 在单元格中不工作UITable视图,但在Swift中工作节中的行数,ios,swift,uitableview,Ios,Swift,Uitableview,我编写了一个函数,在UITableView中添加一个单元格 numberOfRowsInSection起作用,但cellForRowAt不起作用 class ShopMenuViewCell: UITableViewCell { @IBOutlet weak var menuTableView: UITableView! var menuPrice: MenuPrice! override func awakeFromNib() { supe
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
您知道原因吗?请尝试以下代码:
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()
}
}
并将函数setUpTable()作为单元格从ShopMenuViewCell调用。setUpTable()尝试以下代码:
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()
}
}
解决方案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的答案我有一个问题大约5天了,找到了一个解决方案 第一个参考站点:Joel的答案 第二个参考点:保罗的答案 当我添加另一种TableCell时,所讨论的单元格的垂直大小很小 因此,在重新加载数据之前,我增加了单元格的行高(frame.height)的大小,这是固定的
目前,cellforrowat运行安全。您的回答对结果很有帮助。请添加
regCells
功能代码。我不理解您的请求。tableview位于另一个tableview单元格中。他们没有viewDidLoad@谢谢你的反馈。我想你的手机在屏幕上不可见,这就是cellForRow不打电话的原因。你是否检查过将背景颜色设置为ShopMenuViewCell?我以为这是答案,但它不起作用。真的很难过。你能发送regCells(cells:[“ShopMenuInformationCell”])功能吗@恩凯无法在代码中找到答案。它将位于UITableViewExtension regCells(单元格:[“ShopMenuInformationCell”])@Enkha在cellForRow func tableView(tableView:UITableView,cellForRowAt indexPath:indexPath)->UITableViewCell内使用此代码{if indexath.row==0{guard let cell=tableView.dequeueReusableCell(标识符为“ShopMenuViewCell”)作为?ShopMenuViewCell else{fatalError()}cell.backgroundColor=.red return cell}我添加了代码。没有任何意义,因为cellForRowAt没有执行。我会试试。非常感谢。