UITableViewCell не распознает действие кнопки при реализации в качестве FooterView для UITableView с несколькими представлениями нижнего колонтитула - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь добавить footerView для каждого отдельного раздела в моем приложении. Я успешно добавил заголовок, так как он не требует наличия какой-либо кнопки, однако, когда я пытаюсь использовать ту же реализацию для моего footerView, где должна быть кнопка, которая правильно идентифицирует раздел, из которого он был нажат, не работает Я добавляю как заголовок, так и нижний колонтитул в качестве прототипа ячеек из моего UITableView Подклассы footerView UITableViewCell и я добавили кнопку в конструктор интерфейса, даже простой оператор печати не может быть запущен.

Как мой footerView может распознать, что я нажимаю кнопку, а также, как он может распознать участок, из которого она была нажата?

import UIKit

class FooterTableViewCell: UITableViewCell {


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

    }

    var footerDelegate:FooterTableViewCellDelegate?

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

        // Configure the view for the selected state
    }



    @IBAction func addSetIsPressed(_ sender: UIButton) {

        print("Add Set is pressed")
        footerDelegate?.didAddSetIsPressed(cell:self)
    }


}

protocol FooterTableViewCellDelegate {

    func didAddSetIsPressed(cell:FooterTableViewCell)
}

Существует моя реализация моей Footertableviewcell

As you can see, I didn't use any nib files or added the footer programatically, I used another tableViewCell and I use its view.contents to show it in the tableview

Как вы можете видеть, я не использовал никакие файлы кончиков или программно добавил нижний колонтитул, я использовал другой tableViewCell и использую его view.contents для показать это в виде таблицы

Здесь я реализую оставшуюся часть кода в моем контроллере TableView

class TableViewController: UITableViewController, ExerciseTableViewCellDelegate, UICollectionViewDelegate, UICollectionViewDataSource, FooterTableViewCellDelegate {


    func didAddSetIsPressed(cell: FooterTableViewCell) {

        print("Add set is pressed from delegate")
    }

override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {

    let cell = tableView.dequeueReusableCell(withIdentifier: "footerCell") as! FooterTableViewCell
    cell.footerDelegate = self

    return cell.contentView
}

Заранее спасибо за помощь

1 Ответ

1 голос
/ 28 февраля 2020

Лучшим подходом может быть использование замыкания / обратного вызова, но для объяснения того, что происходит ...

С этой строкой:

return cell.contentView

вы возвращаете ячейку вид . Код из класса ячеек исчезает, так как cell выходит за пределы этой области.

Попробуйте вернуть саму ячейку:

return cell

и посмотрите, лучше ли вы удачи.

...