从侧面菜单中选择项目时打开特定的ViewController?

时间:2015-07-22 22:06:34

标签: ios swift uinavigationcontroller viewcontroller

我有CenterTableViewController,左,右 中心是应用程序启动时的主视图,左侧和右侧是侧面菜单,在导航控制器上滑动或单击时打开。Buttons 左侧和右侧TableViewControllers都有自己的项目数,右侧有10项左右。当点击其中一项时,需要弹出特定的ExampleViewControllerViewController出现没有导航控制器(我需要它),在那个导航控制器中我需要一个后退按钮,它会把我送回CenterTableViewController

到目前为止,我到达了RightTableViewController,在它的班级女巫被命名为相同,我有这个方法

 override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        switch (indexPath.row){

    case 0:

        break;
    case 1:

        break;
    case 2:

        break;
    case 3:

        break;
    case 4:

        break;
    case 5:

        let VC = self.storyboard?.instantiateViewControllerWithIdentifier("Kurs_Evra") as! KursEvraViewController

        self.navigationController?.pushViewController(VC, animated: true)


        break;
    case 6:

        break;
    case 7:

        break;
    case 8:

        break;
    case 9:

        break;

    default:
        println("JBG")
    }
}

在案例5中,它会打开我需要的ViewController,但会在RightTableViewController而不是中心(因为“自我”部分)打开。

此外,当它打开时,如何在刚刚打开的ViewController上创建导航控制器和后退按钮?

2 个答案:

答案 0 :(得分:0)

如果您的中央视图控制器有导航控制器,则使用该控制器进行导航。例如,在右侧导航控制器中,不是按下视图控制器,而是触发通知以导航到该页面。 然后在您的中心控制器中收听通知并从那里进行导航。

这是你应该做的:

在案例5的switch语句中,将代码更改为:NSNotificationCenter.defaultCenter()。postNotificationName(" MenuItemNotification",object:" Kurs_Evra“)

在viewDidLoad方法的CenterViewController中,添加以下内容:

NSNotificationCenter.defaultCenter().addObserverForName("MenuItemNotification", object: nil, queue: NSOperationQueue.mainQueue()) { [weak self] notif in

        if let strongSelf = self {

            if let segueIdentifier = notif.object as? String {

                strongSelf.performSegueWithIdentifier(segueIdentifier, sender: nil)

            }

        }

    }

在上面的代码中,我假设您有一个名为Kurs_Evra的segue设置,而不仅仅是故事板ID。如果您不想使用segue,请使用案例5中的代码

答案 1 :(得分:0)

这不是那么难。

转到右侧或左侧菜单,在类create layer didSelectRowAtIndex路径中,并使用上面的switch语句。

然后,如果发布了您需要的代码,这就是您在导航堆栈和主ViewController上发布新故事板的方式

让Example = self.storyboard?.instantiateViewControllerWithIdentifier(“ExampleViewController”)为! ExampleViewController

让navController = UINavigationController(rootViewController:Example)

最后......

self.presentViewController(navController,animated:true,completion:nil)

使用“present”将打开您创建的新控制器,在本例中为ExampleViewController,它将首先出现在新的导航堆栈中。如果您希望关闭或模拟后退按钮,只需将操作连接到按钮并调用:

self.dismissViewController(navController,animated:true,completion:nil)