【问题标题】:Opening a side menu on click on a TAB bar in SWIFT在 SWIFT 中单击 TAB 栏打开侧边菜单
【发布时间】:2016-10-28 04:41:13
【问题描述】:

我想做一些类似下面的快照。

当我点击配置文件标签栏而不是打开一个新的视图控制器时,它会显示一个侧边菜单。是不是在点击标签栏时已经处理了?

【问题讨论】:

  • 你能做你想做的事吗? @山姆

标签: swift uitabbarcontroller swrevealviewcontroller


【解决方案1】:

您可以使用标签栏委托:

extension ViewController: UITabBarDelegate {
    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
        // Present hamburger menu
    }
}

【讨论】:

  • 感谢您的回复,但请您详细说明。这个视图控制器类将是 5 视图控制器的类?
  • 但是如何在标签栏中添加没有 ViewController 的按钮 ....
【解决方案2】:

如果你想实现类似于你的屏幕截图,那么你使用了错误的库,因为当你显示你的右边 viewController 前面 viewController 时,你的右边 viewController 的宽度向左移动,但无论如何这是您需要做的代码

首先你需要把你的viewController作为你的TabBarViewController的代表,在func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool你需要返回false并调用SWRevealViewController的方法来显示正确的viewControllerrightRevealToggleAnimated(true)

class FirstViewController: UIViewController,SWRevealViewControllerDelegate,UITabBarControllerDelegate {

    @IBOutlet weak var sliderControl: UISlider!
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.revealViewController().delegate = self
        self.tabBarController?.delegate = self
    }

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        //self.view.removeGestureRecognizer(self.revealViewController().panGestureRecognizer())
        //self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {

    //checking for specific viewController
    if(viewController is DesiredViewControllerClass) {
        self.revealViewController().rightRevealToggleAnimated(true)
    }
    return false
}


}

希望对你有帮助,问候

【讨论】:

  • 感谢您的回复,但我想要实现的是,当我单击“PROFILE”按钮时,它应该显示此菜单,而不是继续 profileviewcontroller。就像配置文件选项卡只会充当一个按钮,它会调用菜单,但第一个视图控制器上的焦点不会转移。
  • 我的答案已编辑@Sam,您需要实现此方法func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool,这将保留在 currentViewController 中并显示正确的菜单,问候。希望对你有帮助
  • 非常感谢!你太棒了:)
  • 谢谢,一切正常,但是当我在这个调用中调用显示视图控制器时 self.revealViewController().rightRevealToggleAnimated(true);它通过显示视图控制器的宽度量来移动我的屏幕。有什么解决办法吗?
  • 您将如何为此设置情节提要? @Reinier Melian
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
  • 1970-01-01
相关资源
最近更新 更多