【问题标题】:swrevealcontroller not working after navigation to homepage导航到主页后,swrevealcontroller 无法正常工作
【发布时间】:2026-01-24 05:30:02
【问题描述】:

我是 Swift 新手,我正在尝试使用 SWrevealcontroller 实现侧边导航

我有一个根 VC,单击此按钮时有一个按钮,我正在导航到 UITabBarController

这是我的故事板的样子(下)

这就是我在按钮单击时导航的方式

@IBAction func clickButton(_ sender: Any) {
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "Home") as! UITabBarController
    self.present(nextViewController, animated:true, completion:nil)
}

这是我在FirstViewController中的代码

override func viewDidLoad() {
        super.viewDidLoad()
        barButton.target = self.revealViewController()
        barButton.action = #selector(SWRevealViewController.revealToggle(_:))
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }

但是当我从根 VC 导航到 UITabBarController 时出现错误

self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

Fatal error: Unexpectedly found nil while unwrapping an Optional value

谁能帮我看看这里出了什么问题。

TIA

【问题讨论】:

    标签: ios swift swift4 swrevealviewcontroller


    【解决方案1】:

    您需要出示您的RevealViewController 而不是UITabBarController

    Storyboard ID 添加到您的RevealViewController

    然后将其呈现在您的 clickButton(_:) 函数中,如下所示:

    let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "RevealViewControllerID")
    self.present(nextViewController, animated: true)
    

    【讨论】:

    • 你的意思是,我必须像这样更改我的代码@IBAction func clickButton(_ sender: Any) { let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) let nextViewController = storyBoard.instantiateViewController(withIdentifier: "Home") as! UITabBarController self.revealViewController()?.setFront(nextViewController, animated: true) } 但更改后我无法导航。
    • @Rigsby 您无法从侧边菜单或标签栏导航?
    • 我点击第一个 VC 中的那个橙色按钮,点击它,我正在尝试导航,clickButton 是橙色按钮点击时调用的方法
    • @Rigsby 哦,那应该显示TabBarController 以及侧边菜单?
    • @Rigsby 抱歉,我弄错了。然后您需要出示您的RevealViewController 而不是您的TabBarController。 (你的TabBarController 左边的那个)尝试在你的RevealViewController 中添加一个Storyboard ID,实例化它然后呈现它。
    最近更新 更多