Я сделал ящик с двумя секциями ... поэтому я реализовал шаблон делегата для доступа к встроенному tableView внутри моего контейнера .
class Drawer: UIViewController, DrawerTableViewDelegate {
var drawerVC : DrawerTableView?
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "tableViewSegue" {
self.drawerVC = (segue.destination as! DrawerTableView
self.drawerVC!.delegate = self
}
}
В моем классе DrawerTableView реализован делегат , а также некоторый код для доступа к строкам в tableView :
class MenuTableViewController: UITableViewController {
var delegate : MenuTableViewControllerDelegate?
//tableview delegate
Ящик вызывается в двух сценах одинаково:
@objc func didTapRowInDrawer(_ sender: UIBarButtonItem) {
guard let drawerVC = storyboard?.instantiateViewController(withIdentifier: "DrawerCtrl") as? Drawer else { return }
drawerVC.modalPresentationStyle = .overCurrentContext
drawerVC.transitioningDelegate = self
present(drawerVC, animated: true)
}
Могу ли я определить вызывающий ViewController моего ящик ?
Я придумал что-то вроде
if segue.source is VC {
//do something
} else if segue.source is VC2 {
// do something else
}
в Ящик :: подготовить