2015-11-28 171 views
1

我正在制作一个主视图控制器和一个菜单按钮的应用程序。通过点击按钮,出现另一个视图控制器作为侧边菜单,然后用户可以选择返回到前一个主视图控制器。但是,那么菜单按钮不起作用了。按钮功能只能工作一次

主视图控制器的代码是在这里(不是容器视图控制器):

@objc 
protocol CenterViewControllerDelegate { 
    optional func toggleLeftPanel() 
    optional func collapseSidePanels() 
} 

class CenterViewController: UIViewController { 
    @IBOutlet weak var titleLabel: UILabel! 
    var delegate: CenterViewControllerDelegate? 
    @IBAction func MenuTapped(sender: AnyObject) { 
     delegate?.toggleLeftPanel?() 
    } 
    // MARK: Button actions 
} 
+0

您可以添加toggleLeftPanel()函数的代码实现吗? – silentBeep

+0

你可能有一个标志来检查,如果侧菜单如果打开/崩溃,所以根据该标志执行toggleLeftPanel()函数,你可以调用collapseSidePanels()函数 – silentBeep

回答

1

你必须采取一个布尔标志跟踪菜单的打开/折叠,这样的事情:

@objc 
protocol CenterViewControllerDelegate { 
    optional func toggleLeftPanel() 
    optional func collapseSidePanels() 
} 

class CenterViewController: UIViewController { 
    var _isMenuOpen = false 
    @IBOutlet weak var titleLabel: UILabel! 
    var delegate: CenterViewControllerDelegate? 
    @IBAction func MenuTapped(sender: AnyObject) { 
     if _isMenuOpen{ 
      delegate?.toggleLeftPanel?() 
      _isMenuOpen = true 
     } 
     else{ 
      delegate?.collapseSidePanels?() 
      _isMenuOpen = false 
     } 
    } 
    // MARK: Button actions 
} 

希望这会帮助你。