swrevealcontroller не работает после перехода на домашнюю страницу

#ios #swift #swift4 #swrevealviewcontroller

#iOS #swift #swift4 #swrevealviewcontroller

Вопрос:

Я новичок в 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

Ответ №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)
  

Комментарии:

1. вы имеете в виду, что я должен изменить свой код следующим @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) } образом, но после изменения этого я не могу перемещаться.

2. @Rigsby вы не можете перемещаться из бокового меню или с панели вкладок?

3. Я нажимаю на эту оранжевую кнопку из первого VC, при нажатии на нее я пытаюсь перейти, clickButton — это метод, вызываемый при нажатии оранжевой кнопки

4. @Rigsby о, это должно быть представлено TabBarController вместе с боковым меню?

5. @Rigsby извините, я ошибся. Затем вам нужно представить свой RevealViewController вместо вашего TabBarController . (тот, который остался от вашего TabBarController ) Попробуйте добавить a Storyboard ID к вашему RevealViewController , создать его экземпляр, а затем представить его.