Swift 5 Складной заголовок таблицы - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно сделать эту реализацию, мне нужен список ячеек, представляющих месячные периоды, где каждая из них свернута, и при щелчке по ней отображается ее содержимое, я использовал прототипы двух ячеек на основе некоторых учебных пособий, которые я нашел, но я действительноновичок в быстром программировании, я не могу получить ожидаемый результат, я делюсь некоторыми экранами и реальным кодом. Надеюсь, кто-нибудь может мне помочь.

design

class BillingListCell: UITableViewCell{
    @IBOutlet weak var billWrapper: UIView!

    @IBOutlet weak var billTotal: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}
class BillingListHeaderCell: UITableViewCell{


    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var numberLabel: UILabel!
    @IBOutlet weak var statusButton: UIButton!

    func setExpanded() {
        statusButton.setImage(UIImage(systemName: "chevron.up"), for: .normal)
    }

    func setCollapsed() {
        statusButton.setImage(UIImage(systemName: "chevron.down"), for: .normal)
    }
}

class BillingListViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var billingListTableView: UITableView!

    var paymentArray: [String] = ["data","data2", "data3"]
    private let numberOfActualRowsForSection = 1

    func numberOfSections(in tableView: UITableView) -> Int {
        return paymentArray.count
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // First will always be header
        return false ? (1+numberOfActualRowsForSection) : 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if(indexPath.row == 0){
            let cell = tableView.dequeueReusableCell(withIdentifier: "BillingListHeaderCell", for: indexPath) as! BillingListHeaderCell

            cell.setCollapsed()
            return cell
        }else{
            let cell = tableView.dequeueReusableCell(withIdentifier: "BillingListCell", for: indexPath) as! BillingListCell

            cell.billWrapper.layer.cornerRadius = 15
            cell.billWrapper.layer.borderWidth = 1
            cell.billWrapper.layer.borderColor = UIColor.blue.cgColor
            cell.billTotal.text = "1234"
            return cell
        }

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