Откажитесь от UITableViewController от кнопки в TableViewCell - PullRequest
0 голосов
/ 18 января 2020

У меня есть UITableViewController, у которого есть класс представления заголовка с UIButton, который я связал в построителе интерфейса. У меня все работает нормально, так что при нажатии на кнопку код срабатывает.

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

class headerCell: UITableViewCell {
    @IBAction func exit () {
        print("got pressed")
        // tried: MyTableView().dismiss(animated: true, completion: nil)
        // But did not work, did nothing?
    }
}

class MyTableView: UITableViewController {

// All the code for the tableView is here...

}

Ответы [ 2 ]

0 голосов
/ 18 января 2020

После экспериментов с различными ответами я обнаружил, что создание IBAction - не лучший способ сделать это, и вместо этого я просто добавил IBOutlet для кнопки, а затем сделал это в TableViewController:

@objc func exit () {
        dismiss(animated: true, completion: nil)
    }

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let cell = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! headerCell
        cell.exitButton.addTarget(self, action: #selector(exit), for: .touchUpInside)
        return cell
}
0 голосов
/ 18 января 2020
MyTableView().dismiss(animated: true, completion: nil)

Это делает новый контроллер табличного представления и отклоняет его. Так как он даже не был представлен, это ничего не делает

Вам необходимо удалить тот, который содержит ячейку.

Это один из способов: { ссылка }

Но я рекомендую добавить слабую ссылку на ячейку заголовка в MyTableView и установить ее при построении

Кроме того, MyTableView - это ViewController, а не представление. Итак, MyTableViewController - лучшее имя.

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