#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
) Попробуйте добавить aStoryboard ID
к вашемуRevealViewController
, создать его экземпляр, а затем представить его.