按钮动作来调用方法

时间:2017-01-07 11:19:58

标签: ios swift viewdidload

我是iOS开发中的新手,正在寻找您的建议。

我正在GitHub查看一个项目。

我想添加一些功能。我想添加一个按钮,它将显示SideMenu并可能隐藏它。

sideMenu是类SideMenu的一个实例,它是在ViewDidLoad方法中创建的。如何使用按钮的动作方法调用sideMenu.toggleMenu(true)方法。

class HomeViewController: UIViewController, SideMenuDelegate {

    @IBAction func menuButtonTapped(_ sender: Any) {

     sideMenu.toggleMenu(open: true)

    }


    override func viewDidLoad() {
        super.viewDidLoad()

    let sideMenu = SideMenu(menuWidth: 200 , menuItemTitles: ["", "", "Profile", "Settings", "Restaurant"], parentViewController: vviewController)

        sideMenu.menuDelegate = self

}

我的按钮是使用故事板创建的,这就是为什么我无法将动作方法添加到viewDidLoad中。

理论上我可以在ViewDidLoad中以编程方式创建按钮。这是唯一的解决方案吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

问题与您的按钮或您声明的位置无关。

代码中的

sideMenu是常量viewDidLoadIBAction无法访问。

sideMenu的定义移到方法之外,并将其设为可选:

var sideMenu:SideMenu?

viewDidLoad中按原样设置(删除let)

sideMenu = SideMenu(...

IBAction中,打开可选项以使用它:

if let sideMenu = sideMenu {
    // do what you need with sideMenu
else {
    // handle error sideMenu not initialised properly
}

见vacawama对替代品的评论。