swift UINavigationController委托

时间:2016-03-12 09:50:02

标签: swift uinavigationcontroller

左侧有一个UINavigationControllerUIBarButtonItem。该导航控制器是UIViewController的子类。 当我按下该按钮时,我编写了一个委托方法,该方法被调用。 但是在父ViewController上,这个委托没有被调用,我不知道为什么。有谁能够帮我?感谢

以下是一些代码......

这是导航控制器

protocol CollectionControllerDelegate {
    func onMenu()
}

class CollectionController: UIViewController {
    var delegate: CollectionControllerDelegate?

    @IBAction func onMenu() {
        self.delegate?.onMenu()
    }
}

这是父视图控制器类,mainController是导航控制器,我在上面描述过。

(self.mainController!.viewControllers[0] as! CollectionController).delegate = self

这个函数没有被调用,我不明白:(

func onMenu() { }

1 个答案:

答案 0 :(得分:0)

检查var delegate: CollectionControllerDelegate?是否为零。如果是这种情况,你在这里设置一个错误的代表:

(self.mainController!.viewControllers[0] as! CollectionController).delegate = self

第一个视图控制器依赖于您在代码中的哪个位置调用它。它始终是UINavigationController堆栈上的顶视图控制器,购买时必须确保它已被推送。

还要确保您的@IBAction已连接并且正在调用。