Swift 4: новый Viewcontroller при нажатии на ячейку с отдельным классом - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть табличное представление, которое имеет свой класс для повторного использования.Моя проблема в том, что теперь я хочу добавить:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath:IndexPath) {

tableView.deselectRow(at: indexPath, animated: false)
let vc = UIStoryboard(name: "Main", bundle:nil).instantiateViewController(withIdentifier: "eventView") as! eventView 
vc.event = self.eventsToLoad[indexPath.row]
self.present(vc, animated: true, completion:nil)

}

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

1 Ответ

0 голосов
/ 27 февраля 2019

Если вы делаете tableView своим собственным делегатом, то вам нужно добавить свой собственный делегат, чтобы сообщить докладчику (в вашем случае viewcontroller) о событии didSelectRowAt. * ​​1001 *

Как:

protocol CustomTableViewDelegate: class {
    func customTableView(_ tableView: CustomTableView, didSelectRowAt indexPath: IndexPath)
}

class CustomTableView: UITableView, UITableViewDelegate {
    weak var customDelegate: CustomTableViewDelegate?
    //... other properties and UITableViewDelegate implementation
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        customDelegate?.customTableView(self, didSelectRowAt: indexPath)
    }
}

class SomeViewController: CustomTableViewDelegate {
    func customTableView(_ tableView: CustomTableView, didSelectRowAt indexPath: IndexPath) {
        tableView.deselectRow(at: indexPath, animated: false)
        let vc = UIStoryboard(name: "Main", bundle:nil).instantiateViewController(withIdentifier: "eventView") as! eventView 
        vc.event = self.eventsToLoad[indexPath.row]
        self.present(vc, animated: true, completion:nil)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...