Jonkykong sidemenu создание делегатов, не работающих в Swift - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть простое боковое меню, взятое из 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]

Но ничего не отображается. Что-то я делаю не так? Я что-то здесь упускаю?

Огромная благодарность за любой ответ!

...