我是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中以编程方式创建按钮。这是唯一的解决方案吗?
答案 0 :(得分:1)
问题与您的按钮或您声明的位置无关。
代码中的 sideMenu
是常量viewDidLoad
,IBAction
无法访问。
将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对替代品的评论。