如果我单击 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()
}
}
}
如何解决这个导航问题,请指导我。