Не работает UITableView в cellForRowAt, но numberOfRowsInsection работает в Swift - PullRequest
0 голосов
/ 19 ноября 2018

Я написал функцию для добавления ячейки в 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.

Знаешь почему?

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

Попробуйте код ниже:

Раствор 1

class ShopMenuViewCell: UITableViewCell {

       @IBOutlet weak var menuTableView: UITableView! {
                didSet {
                    self.menuTableView.regCells(cells: ["ShopMenuInformationCell"])
                    self.menuTableView.delegate = self
                    self.menuTableView.dataSource = self
                }
            }
    }

Решение 2: Пожалуйста, проверьте Ананд Верма Ответ

0 голосов
/ 20 ноября 2018

У меня была проблема около 5 дней, и я нашел решение!

Первый справочный сайт: ответ Джоэла cellForRowAtIndexPath: не вызывается

Второй справочный сайт: ответ Паоло Swift: высота строки UITableViewCell

Когда я добавляю другой вид TableCell, размер рассматриваемой ячейки по вертикали невелик.

Поэтому я увеличил размер ячейки RowHeight (frame.height) перед перезагрузкой данных, и это исправлено!

В настоящее время cellforrowat работает безопасно. Ваши ответы были полезны для результатов.

0 голосов
/ 19 ноября 2018

Пожалуйста, попробуйте следующий код:

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 как cell.setUpTable ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...