Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在单元格中不工作UITable视图,但在Swift中工作节中的行数_Ios_Swift_Uitableview - Fatal编程技术网

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没有执行。我会试试。非常感谢。