自定义ViewController中的UITableView:自定义UITableViewCells重叠

时间:2017-08-26 09:56:06

标签: ios objective-c uitableview

我在自定义TableView内调用ViewController。在我的UITableView中,我的细胞重叠。像这样

TableviewCells Overlapping

在故事板编辑器中,我将行高设置为63磅自定义,但看起来他们实际上使用的是取消选中自定义框时单元格的默认高度。

与其他一些尝试实现heightForRowAt函数的解决方案一样,但它没有做任何事情。我试过使用过多的大数字,但结果总是和以前一样。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
    if(self.view.traitCollection.horizontalSizeClass == .compact ||
        self.view.traitCollection.verticalSizeClass == .compact) {
        cellHeight = 55
        return 55
    }
    else{
        return 63
    }
}

迄今为止我见过的解决方案中唯一看起来很有希望的是这个。 iOS UITableViewCell overlapping 我已经尝试在我的自定义prepareForReuse类文件中实现TableViewCell函数,但我不知道我实际应该添加到函数中的内容,所以我只调用了超级函数并添加了一个打印声明

--- Full TableView代码---

extension SavingViewController: UITableViewDataSource {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellIdentifier = "WishlistTableViewCell"

        guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? WishlistTableViewCell else {
            fatalError("The dequeued cell is not an instance of WishlistTableViewCell.")
        }

        cell.selectionStyle = .none


        return cell
    }


    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
    {
        if(self.view.traitCollection.horizontalSizeClass == .compact ||
            self.view.traitCollection.verticalSizeClass == .compact) {
            cellHeight = 55
            return 55
        }
        else{
            return 63
        }
    }

    func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        // Return false if you do not want the specified item to be editable.
        return true
    }

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            /*
            let resultRemoving = bookmarks[indexPath.row]
            if var bookmarkData = defaults.object(forKey:"bookmarkDict") as? [String: [String]] {
                bookmarkData.removeValue(forKey: resultRemoving.resultURL)
                defaults.set(bookmarkData, forKey:"bookmarkDict")
            }
            defaults.synchronize()
            */
            items.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
        } else if editingStyle == .insert {
            // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
        }
    }
}

1 个答案:

答案 0 :(得分:1)

目前heightForRowAt未被调用,因为heightForRowAt方法是UITableViewDelegate方法,所以

您的扩展程序应如下所示:

添加UITableViewDelegate

extension SavingViewController: UITableViewDataSource, UITableViewDelegate {
}