【问题标题】:How can I call and active a function with using delegate in swift?如何在 swift 中使用委托来调用和激活函数?
【发布时间】:2019-08-28 20:36:52
【问题描述】:

我在 HomeController 中创建了一个 sideMenu(如 Twitter)。这个控制器有两个函数 closeSideMenu() 和 openSideMenu() 并且它们都可以工作。但是当我尝试在 MenuController 中使用 didselectrow 关闭菜单时(顺便说一句,MenuController 是一个 tableview 控制器)它不起作用。我正在使用委托,我在 HomeController 上创建了一个协议,下面是 MenuController 的代码。请问你能帮帮我吗?

//this is in HomeController()
protocol ControlsDelegate {
func closeSideMenu()
}

class HomeController: UICollectionViewController, UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate, HomePostCellDelegate {

var controlsMenu : ControlsDelegate?
...
...
...

//this is in MenuController()
extension MenuController: ControlsDelegate {
func closeSideMenu() {
}
}

override func tableView(_ tableView: UITableView, didSelectRowAt IndexPath: IndexPath) {
print("clicked menu items..") // it is working
closeSideMenu()
}

【问题讨论】:

    标签: swift controller call func


    【解决方案1】:

    当您实例化菜单控制器时,请确保您将 HomeController 作为委托传递。

    let menuController = MenuController()
    menuController.delegate = self
    self.present(menuController, animated: true) // Depends how you present the MenuController
    

    现在在你的 HomeController 中,你需要实现 closeSideMenu()

    func closeSideMenu() {
        //Implementation to hide Side Menu
    }
    

    【讨论】:

    • 是的,我试过了,但它对我不起作用。也许我在某个地方犯了一些错误,但我不知道错误在哪里。我是 swift 的新手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2020-02-20
    • 1970-01-01
    相关资源
    最近更新 更多