Я реализовал некоторый код, включая протоколы, чтобы связать активный экземпляр с VC, чтобы разрешить Segues, и мне интересно, есть ли лучший способ решить эту проблему или я неправильно обращаюсь с Segue.
Сеги в дочерних классах не работают, потому что они не находятся в основном VC
Выдержка из файла VC
class ViewController: UIViewController, UITableViewDelegate, TableViewControllerDelegate {
func didButtonPressed() {
performSegue(withIdentifier: "destStory", sender: self)
}
override func viewDidLoad() {
super.viewDidLoad()
tableViewController.delegate = self
}
}
protocol TableViewControllerDelegate {
func didButtonPressed()
}
class TableViewController: UITableViewController, TableViewCellDelegate {
func didButtonPressed() {
delegate?.didButtonPressed()
}
let test = ["test1", "test2", "test3"]
var instanceOf = self
var delegate: TableViewControllerDelegate?
Выдержка из файла ячейки
protocol TableViewCellDelegate {
func didButtonPressed()
}
class TableViewCell: UITableViewCell {
var delegate: TableViewCellDelegate?
@IBOutlet weak var labelOne: UILabel!
@IBOutlet weak var labelTwo: UILabel!
@IBOutlet weak var buttonOne: UIButton!
@IBAction func buttonOnePressed(_ sender: Any) {
delegate?.didButtonPressed()
}
Это работает так, как я ожидал, но, возможно, с ним сложно работать.