Кнопки в ячейке не скрываются, когда раздел uitableview свернут - PullRequest
0 голосов
/ 02 мая 2018

Я реализую UITableView с разделами и складными заголовками. Ячейки раздела имеют метки и кнопки. Ярлыки свернуты, но кнопки остаются незанятыми (не скрытыми), когда я сворачиваю заголовок.

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

Вот код:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if (sections[indexPath.section].expanded)
        {
            return 244
        }
        else
        {

            return 0
        }
    }
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        let header = ExpandableDashboardView()
        print("title\(sections[section].title)")
        header.customInit(title: sections[section].title, section: section, delegate: self,isOpen:sections[section].expanded)
        return header

    }

    func toggleSection(header: ExpandableDashboardView, section: Int) {
        sections[section].expanded = !sections[section].expanded

        settingsTable.beginUpdates()
        if sections[section].expanded == true
        {

            header.changeInit(title: sections[section].title, section: section, delegate: self)
        }
        else
        {
            header.customInit(title: sections[section].title, section: section, delegate: self, isOpen: sections[section].expanded)


        }

class ExpandableDashboardView: UITableViewHeaderFooterView{
    var delegate : ExpandableDashboardDelegate!
    var section:Int!
    var image = UIImage()

    override init(reuseIdentifier: String?) {
        super.init(reuseIdentifier: reuseIdentifier)
        self.addGestureRecognizer(UITapGestureRecognizer(target:self,action:#selector(selectDashboardHeader)))
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    func customInit(title:String,section:Int,delegate:ExpandableDashboardDelegate,isOpen:Bool)
    {
//        if isOpen == true{
////            self.textLabel?.text = "\u{25B6} \(title)"
//            self.textLabel?.text = "\u{25BC} \(title)"
//        }
//        else{
//            self.textLabel?.text = "\u{25BC} \(title)"
//        }
//        self.textLabel?.textColor = UIColor.black

        self.textLabel?.text = "\u{25B6} \(title)"                  //02C3
        self.section = section
        self.delegate = delegate
        layoutSubviews()

    }

    func changeInit(title:String,section:Int,delegate:ExpandableDashboardDelegate)
    {
        self.textLabel?.textColor = UIColor.black

        self.textLabel?.text = "\u{25BC} \(title)"
        self.section = section
        self.delegate = delegate
        layoutSubviews()
    }

    func selectDashboardHeader(gestureRecognizer:UIGestureRecognizer)
    {
        let cell = gestureRecognizer.view as! ExpandableDashboardView
        delegate.toggleSection(header: self , section: cell.section)
        print("section\(cell.section)")
    }
    override func layoutSubviews() {
        super.layoutSubviews()
        self.textLabel?.textColor = UIColor.init(red: 17.0/255.0, green: 83.0/255.0, blue: 168.0/255.0, alpha: 1.0)
        self.contentView.backgroundColor = UIColor.init(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1.0)
    }

1 Ответ

0 голосов
/ 03 мая 2018

Я нашел проблему позади. проверьте "закрепить за пределы" в конструкторе интерфейса для кнопок. Это заставит кнопки прятаться.

...