Я внедрил side menu from github в свой проект. Я пытаюсь добавить в него . Таким образом, когда выбирается cell
, вызов будет вызван в другом классе (основной viewController
). Вот мой код:Делегат протокола не вызывает функцию
tableView.swift
protocol menuTableViewProtocol {
func didSelectCell(SelectedCellNumber : Int)
}
var delegate : menuTableViewProtocol?
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.delegate?.didSelectCell(indexPath.row)
}
mainVC.swift
class MainViewController: UIViewController, menuTableViewProtocol {
...
// Conforming to Protocal
func didSelectCell(SelectedCellNumber: Int)
{
switch SelectedCellNumber {
case 0:
println("0")
case 1:
println("1")
case 2:
println("2")
default:
println("0101010")
}
}
}
Когда я запустить приложение и выбрать ячейку, ничего не происходит. didSelectRowAtIndexpath
действительно называется. (Я вставил println
, и он печатает), но didSelectCell
(protocol function
) не вызывается. Что я делаю неправильно, и что я могу сделать, чтобы исправить это?
В вашем mainVC вы соответствовали этому протоколу и установить экземпляр Tableview делегата, как я? Можете ли вы показать этот код. –
Я отредактировал вопрос в соответствии с протоколом. Я думал, что чего-то не хватает. У меня нет экземпляра tableView.swift ** в mainVC.swif **, поэтому он не может сделать делегата самостоятельно. Созданный 'tableView' get создается в navigationController.swift. https://github.com/evnaz/ENwiftSideMenu/blob/master/Example/SwiftSideMenu/MyNavigationController.swift И я вызываю метод только в mainVC.swift. ('toggleSideMenuView') – Jessica
извините, но у меня нет большой идеи о стороннем компоненте, который вы используете, но в идеале у вас должен быть экземпляр и задать делегат для себя, чтобы действительно делегировать делегаты. Или вы также можете посмотреть уведомления, если это вам подходит. –