如何解决Sidemenu 控制器菜单没有在 swift 中导航到相应的视图控制器请帮助
我在名为 MenuVC 的 tableview 中创建了侧边菜单..
并且我创建了带有如下菜单按钮的自定义导航栏,并在每个视图控制器中调用
func setUpNavigationBar(){
let menuImageView = UIImageView.init(image: #imageLiteral(resourceName: "menu8"))
menuImageView.tintColor = .darkGray
menuImageView.frame = CGRect(x:0.0,y:0.0,width:25,height:25.0)
menuImageView.contentMode = .scaleAspectFit
menuImageView.widthAnchor.constraint(equalToConstant: 25).isActive = true
menuImageView.heightAnchor.constraint(equalToConstant: 25).isActive = true
menuImageView.addGestureRecognizer(UITapGestureRecognizer(target: self,action: #selector(menuClick)))
let btnMenu = UIBarButtonItem(customView: menuImageView)
self.navigationItem.setLeftBarButton(btnMenu,animated: true)
}
@objc func menuClick(){
print("menu revealed: \(self.sideMenuController?.isMenuRevealed)")
if !(self.sideMenuController?.isMenuRevealed ?? false){
self.sideMenuController?.revealMenu()
}
}
并在场景委托中
func scene(_ scene: UIScene,willConnectTo session: UIScenesession,options connectionoptions: UIScene.Connectionoptions) {
let menu = (StoryBoard.main).instantiateViewController(identifier: "MenuVC") as! MenuVC
window?.rootViewController = SideMenuController(contentViewController: mainVC,menuViewController: menu)
self.window?.makeKeyAndVisible()
}
在 MenuVC 中:
struct MenuModel{
var name : String?
var icon : UIImage?
var isSelect : Bool?
}
class MenuVC: UIViewController,UITableViewDelegate,UITableViewDataSource{
var arrMenu = [MenuModel(name: "Home",icon: nil,isSelect: true),MenuModel(name: "All Products",isSelect: false),MenuModel(name: "Shop by category",isSelect: false)]
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
return arrMenu.count
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "MenuTableCell",for: indexPath) as! MenuTableCell
cell.lblTitle.text = arrMenu[indexPath.row].name
return cell
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
dispatchQueue.main.async {
let from = (self.sideMenuController?.contentViewController as? UINavigationController)
if indexPath.section == 0{
for i in 0..<self.arrMenu.count{self.arrMenu[i].isSelect = false}
self.arrMenu[indexPath.row].isSelect = true
tableView.reloadData()
(self.sideMenuController?.isMenuRevealed ?? false) ? self.sideMenuController?.hideMenu() : nil
switch indexPath.row {
case 0:
let signupVC = StoryBoard.main.instantiateViewController(identifier: "HomeVC") as! HomeVC
self.navigationController?.pushViewController(signupVC,animated: true)
break
case 1:
let signupVC = StoryBoard.main.instantiateViewController(identifier: "AllProductsVC") as! AllProductsVC
self.navigationController?.pushViewController(signupVC,animated: true)
break
case 2:
let signupVC = StoryBoard.main.instantiateViewController(identifier: "CategoryVC") as! CategoryVC
self.navigationController?.pushViewController(signupVC,animated: true)
break
default:
return
}
}else{
}
}
使用代码我可以打开菜单,但是如果我点击 All Products
菜单,那么它不会转到那个视图控制器..我应该如何从侧菜单导航..请帮忙
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。