如何将 header 视图添加到 swift 中的每个自定义表格视图单元格

how to add header view to each of custom tableViewCells in swift

我有两个自定义 TableViewCell。所以首先 TableViewCell 就像一个最近的列表,它可以变长。但第二个单元格始终位于底部。所以我需要添加持有 secondTableViewCell 的 UILabel。 the result that i need.

import UIKit

class bagPage: UIViewController, UITableViewDelegate, UITableViewDataSource {
    var itemsName: [String] = []
    var itemsPhoto: [UIImage] = []
   // these arrays will defined in other view controller
    
    @IBOutlet weak var tableView: UITableView!
        override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.dataSource = self
        tableView.delegate = self
       
    }
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        
        if indexPath.row < itemsName.count{
            return 165
        }else{
            return 50
        }
        
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return  6 + itemsName.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        
        if indexPath.row < itemsName.count{
            
            let cell = tableView.dequeueReusableCell(withIdentifier: "bagTableViewCell") as? bagTableViewCell
            cell?.itemName.text = itemsName.last
            cell?.itemPhoto.image = itemsPhoto.last
            return cell!
        }
        if indexPath.row == itemsName.count {
            let cellTwo = tableView.dequeueReusableCell(withIdentifier: "extraBagPageTableView") as? extraBagPageTableView
            // here i'm hiding views in first row
            cellTwo?.textLabel?.text = "These are products that u can add to your cell"

            return cellTwo!
            
        }else{
            let cellTwo = tableView.dequeueReusableCell(withIdentifier: "extraBagPageTableView") as? extraBagPageTableView
            return cellTwo!
        }
        
    }
    
}

这是提供解决方案的另一种尝试。这是您要找的吗?

这是项目的 link https://drive.google.com/file/d/1XlSF4fGiNzOqQHauiNo7TuFhKUTrFbsJ/view?usp=sharing

如果您需要更多帮助,请告诉我

晚上好,所以我按照您的图片并使代码遵循您的惯例,即 1 个表格视图部分,2 个不同的单元格。我尝试使用您的命名约定。请注意,我必须交换高度值,你把它们弄错了。

   class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
        @IBOutlet weak var tableView: UITableView!
        var itemsName: [String] = ["Helmet", "Gloves", "Bindings", "Goggles", "Kneepads", "Boots", "Snowboard"]
        
        override func viewDidLoad() {
            super.viewDidLoad()
        }
        
        func numberOfSections(in tableView: UITableView) -> Int {
            return 1
        }
    
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 1 + itemsName.count
        }
        
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            
            if indexPath.row < itemsName.count{
                let bagTableViewCell = tableView.dequeueReusableCell(withIdentifier: "BagTableViewCell") as? BagTableViewCell
                bagTableViewCell?.productsLabel.text = itemsName[indexPath.row]
                return bagTableViewCell!
            } else {
                let extraBagPageTableView = tableView.dequeueReusableCell(withIdentifier: "ExtraBagPageTableView") as? ExtraBagPageTableView
                return extraBagPageTableView!
            }
        }
        
        func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
            if indexPath.row < itemsName.count {
                return 50
            } else {
                return 165
            }
        }
    }

还有表格视图单元格。请注意第二个单元格的名称不正确。

class BagTableViewCell: UITableViewCell {
    @IBOutlet weak var additionalProductsLabel: UILabel!
    @IBOutlet weak var productsLabel: UILabel!
    @IBOutlet weak var productImage: UIImageView!
}

class ExtraBagPageTableView: UITableViewCell {
    
}

总的来说是这样的

项目可以在这里找到。 (我这次正确设置了权限:))

TableCellWithLabel Project