如何在TableView页脚视图中获取复选框功能

时间:2019-06-19 08:32:22

标签: swift

我必须在tableview页脚中使用复选框,检查时我必须显示文本字段。

在我的ViewController中 @IBOutlet弱var resultTable:UITableView!

在FooterCell中

import UIKit

class FooterCell: UITableViewCell 
{
    @IBOutlet weak var textFld: UITextField!
    @IBOutlet weak var checkBtn: UIButton!
    @IBOutlet weak var submitBtn: UIButton!

    override func awakeFromNib() 
    {
        super.awakeFromNib()
    }

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

这是我在课堂上的代码

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? 
{
    let footer = resultTable.dequeueReusableCell(withIdentifier: "footer") as? FooterCell
    footer!.textFld.isHidden = true
    footer!.submitBtn.isHidden = true
    footer!.checkBtn.addTarget(self, action: #selector(checkBoxSelection(_:)), for: .touchUpInside)

    return footer?.contentView
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat 
{
    return 55
}

@objc func checkBoxSelection(_ sender:UIButton)
{
    let footer = resultTable.dequeueReusableCell(withIdentifier: "footer") as? FooterCell

    if askBool
    {
        footer!.checkBtn.setImage(UIImage(named:"CheckBox"), for: .normal)
        footer!.textFld.isHidden = false
        footer!.submitBtn.isHidden = false

        askBool = false
    } else
    {
        footer!.checkBtn.setImage(UIImage(named:"UnCheckBox"), for: .normal)
        footer!.textFld.isHidden = true
        footer!.submitBtn.isHidden = true

        askBool = true
    }
}

1 个答案:

答案 0 :(得分:0)

如果您想在footerView中添加功能,则需要使用协议来检测用户已选中或未选中按钮。

1)首先,创建一个协议

  protocol FooterCheckable: class {
        func isChecked()
    }

2)然后在页脚视图类中,执行内部复选框动作。

class TableViewFooter: UITableViewHeaderFooterView {
        weak var delegate: FooterCheckable?
        @IBAction func approveOrRejectBtnPressed(_ sender: UIButton) {
            delegate?.isChecked()
        }
    }

3)在视图控制器内部,您需要使用以下代码注册tableViewFooter

tableView.register(UINib(nibName: yourFooterViewString, bundle: nil),
                   forHeaderFooterViewReuseIdentifier: identifier)

4)然后,再次在View Controller类中,您需要使用以下代码来使用标头并将委托提供给您的视图控制器

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        if let footer = tableView.dequeueReusableHeaderFooterView(withIdentifier: identifier) as? TableViewFooter {
            footer.delegate = self
            return footer
        }
        return nil
    }

5)最后,您需要确保需要在视图控制器内部遵循协议,并在选中标题按钮时执行所需的操作。

extension ViewController: FooterCheckable {
func isChecked() {
}
}

这是一个幸福的结局,希望对您有用。