У меня есть простое боковое меню, взятое из Github: jonkykong / SideMenu .
Я создал SideMenuViewController, в котором есть таблица со следующими функциями TableView Delegate / DataSource:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return menuImages.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "MainMenuCell"
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as? MainMenuTableViewCell else {
fatalError("The dequeued cell is not an instance of MainMenuTableViewCell.")
}
cell.set(image: menuImages[indexPath.row], label: menuLabels[indexPath.row])
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
dismissDispatch.enter()
dismiss(animated: true, completion: nil)
dismissDispatch.leave()
dismissDispatch.notify(queue: .main) {
let selectedMenu = self.menuLabels[indexPath.row]
self.homeMenuSelectionDelegate?.selectedHomeMenu(menu: selectedMenu)
}
}
Я настроил делегата с помощью протокола:
protocol HomeMenuSelectionDelegate{
func selectedHomeMenu(menu: String)
}
И назначил делегата внутри MainMenuViewController с помощью:
var homeMenuSelectionDelegate: HomeMenuSelectionDelegate?
Метод делегата в HomeViewController выглядит следующим образом:
extension HomeViewController: HomeMenuSelectionDelegate{
func selectedHomeMenu(menu: String) {
print("Home menu \(menu)")
}
}
Я также назначил делегата в viewDidLoad внутри HomeViewController:
override func viewDidLoad() {
super.viewDidLoad()
mainMenuViewController.homeMenuSelectionDelegate = self
}
Как и для большинства делегатов, этого должно было быть достаточно, чтобы он напечатал бы что-то вроде:
Home menu [whatever menu is clicked in the table inside the SideMenuViewController]
Но ничего не отображается. Что-то я делаю не так? Я что-то здесь упускаю?
Огромная благодарность за любой ответ!