场景:
我有一个(TableViewController)的MainViewController、TableViewController和DetailsViewController
我正在使用开源库来获取滑动菜单功能,可以在此处找到教程:滑动菜单 ENSideMenuNavigationController
当我将本教程应用到我的项目中时,我可以轻松地获得我想要的滑动菜单,您可以从image
当我单击第二个 View 时,会出现一个带有列表数据的 TableViewController,当我选择一行时,它导航到详细信息 View Controller ,并且当我从详细信息 View Controller 返回到 TableViewController 时,问题开始,滑动菜单不会再次打开。
这是我的 TableViewController didSelectRowAtIndexPath 代码:
switch (indexPath.section) {
case 0:
if (self.myInvoicesUnPaid.isEmpty){
self.displayAlertMessage("Ödenmemiş faturanız bulunmamaktadır.")
} else if (!self.myInvoicesUnPaid.isEmpty){
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow;
//let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewControllerWithIdentifier("viewControllerIdentifer") as! invoiceDetailsViewController
viewController.passedValue = self.myUnpaidInvoicesDetails[(indexPath?.row)!]
viewController.isPaid = false
self.presentViewController(viewController, animated: true , completion: nil)
}
break
case 1:
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow;
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewControllerWithIdentifier("viewControllerIdentifer") as! invoiceDetailsViewController
viewController.passedValue = self.myPaidInvoicesDetails[(indexPath?.row)!]
viewController.isPaid = true
self.presentViewController(viewController, animated: true , completion: nil)
break
default: break
}
这是我导航回 TableViewController 时的detailsViewController 代码
func backButtonPressed (sender:UIButton!){
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("InvoicesTableViewController") as! InvoicesTableViewController
vc.navigationController?.navigationBarHidden = false
vc.navigationController?.setNavigationBarHidden(false, animated:true)
performSegueWithIdentifier("backToMyInvoices", sender: self)
}
我的代码的最后一段代表来自 ENsideMenuNavigationController 的教程代码
class SlideNavigationController: ENSideMenuNavigationController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let menu = storyBoard.instantiateViewControllerWithIdentifier("LeftSideViewController") as! LeftSideMenuTableView
sideMenu = ENSideMenu(sourceView: self.view, menuViewController: menu, menuPosition: ENSideMenuPosition.Left )
sideMenu?.menuWidth = 220
view.bringSubviewToFront(navigationBar)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
请提供任何帮助,我们将不胜感激。我已经好几个星期了
最佳答案
我正在使用这个滑动菜单,并且我可以在整个应用程序中使用它。即使在 ViewController 弹出之后也是如此。
使用 Root View Controller - MainViewController 初始化 ENNavigationViewController(“Example”文件夹中有一个可以使用的示例)。
当您想要呈现下一个 View Controller 时:
self.navigationController?.pushViewController(...)
或使用示例中 ENSlideMenuNavigation Controller 上提供的方法:
setContentViewController(contentViewController: UIViewController)
关于swift - 从 UITableViewController 导航到详细信息 View Controller 时,ENSideMenu 不会再次快速打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35964086/