在 swift 中单击 homevc 中的按钮后,Sidemenu tableview 选定的行不起作用(无法修复导航问题)

问题描述 投票:0回答:0

如果我单击 langSelectBtn 中的任何按钮,那么侧面菜单不起作用,为什么?。但如果我不使用 langSelectBtn 则侧边菜单行会起作用。请用下面的代码指导我。

这是辅助代码:

class Helper {

static func getVcObject(vcName:VCNameCase, StoryBoardName:StoryBoardNameCase) -> UIViewController{
    
    let storyBoard: UIStoryboard = UIStoryboard(name: StoryBoardName.rawValue, bundle: nil)
    let vc = storyBoard.instantiateViewController(withIdentifier: vcName.rawValue)
    return vc
}

static func changeLanguage(with : String) {
    if with == "fr"{
        Bundle.setLanguage("fr")
        langType = "fr"
        UserDefaults.standard.setValue("fr", forKey: langType)
    }
    else {
        Bundle.setLanguage("en")
        langType = "en"
        UserDefaults.standard.setValue("en", forKey: langType)
    }
}
}

这是菜单代码:

class MenuVC: UIViewController {

 override func viewDidLoad() {
    super.viewDidLoad()
    
    if langType == "fr"{
        Bundle.setLanguage("fr")
    }else{
        Bundle.setLanguage("en")
        print("Lang: en")
    }
}
extension MenuVC : UITableViewDelegate,UITableViewDataSource{


func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    
    DispatchQueue.main.async {
        let from  = (self.sideMenuController?.contentViewController as? MainNavigationController)
       
        (self.sideMenuController?.isMenuRevealed ?? false) ? self.sideMenuController?.hideMenu() : nil
        
        switch self.arrOptions[indexPath.section][indexPath.item].title {

        case NSLocalizedString("My Profile".localizedWithLanguage, comment: ""):
            
            from?.popToRootViewController(animated: true)
            break
            
        case NSLocalizedString("Change Language", comment: ""):
            from?.popToRootViewController(animated: true)
            (from?.viewControllers[0] as? PublicProfileViewController)?.showPop()
            break
       case NSLocalizedString("My Gallery".localizedWithLanguage, comment: ""):
            let vc = Helper.getVcObject(vcName: .ImageGalleryVC, StoryBoardName: .Profile) as! ImageGalleryVC
            self.checkAndPushPop(vc, navigationController: from)
            break
        default:
            break
        }
    }
}

这是 Publicprofile: 这里 showPop 包含 2 个按钮,如果我选择任何一个按钮,然后如果我单击侧边菜单,然后单击 My Gallery 行,那么它不会进入该屏幕,但在选择任何 langSelectBtn from showpopup My Gallery was working 为什么在选择 langSelectBtn 后,任何侧边菜单行都不会工作

 var langType = "en"
 class PublicProfileViewController: UIViewController {

 @IBAction func langSelectBtn(_ sender: UIButton) {
    if sender.tag == 0{
        Helper.changeLanguage(with: "fr")
        langType = "fr"
        
        updateForLanguage()
    }else{
        Helper.changeLanguage(with: "en")
        langType = "en"
        updateForLanguage()
    }
    print(langType)
    remove()
}


func updateForLanguage() {
    let scene = UIApplication.shared.connectedScenes.first
    let sd : SceneDelegate = (scene?.delegate as! SceneDelegate)
    let mainNav = UINavigationController(rootViewController: self)
    let menu = Helper.getVcObject(vcName: .MenuVC, StoryBoardName: .Main) as! MenuVC
    sd.window?.rootViewController = SideMenuController(contentViewController: mainNav, menuViewController: menu)
    sd.window?.makeKeyAndVisible()
}

@IBAction func menuBtn(_ sender: UIButton) {
    if !(self.sideMenuController?.isMenuRevealed ?? false){
        self.sideMenuController?.revealMenu()
     }
}

}

如何解决这个导航问题,请指导我。

swift uinavigationcontroller uiwindow side-menu rootviewcontroller
© www.soinside.com 2019 - 2024. All rights reserved.