从其他子视图在主视图中将ViewController加载为子视图

时间:2017-01-17 11:27:02

标签: ios swift3 xcode8

我使用swift3 / xcode 8编写应用程序。我的应用程序有一个名为MenuViewController的中央视图控制器,负责侧边菜单。 在这个内部,我将其他视图作为子视图加载,所以这样我可以在所有其他视图中使用侧边菜单。

但我现在有疑问:在特定的视图控制器中,我有一个表视图,它有一个方法来执行选择项目的操作。此动作调用其他 查看并传递参数。

那么,如何使用此参数在BaseViewController中加载此视图?有可能吗?

如果不清楚,请告诉我。

谢谢!

更新1:

我正在使用我发现有趣的解决方案: Cocoacasts

基本上我在MenuViewController上有这个代码:

声明要在MenuViewController中加载的视图:

    lazy var filamentoViewController: FilamentoViewController = {

        let storyboard = storyboard.instantiateViewController(withIdentifier: "FilamentoViewController") as! FilamentoViewController 
        self.addViewControllerAsChildViewController(childViewController: viewController)
        return viewController
    }()

在MenuViewController中添加viewcontroller作为子节点:

    private fun addViewControllerAsChildViewController(childViewController: UIViewController)
    {
      addChildViewController(childViewController)
      view.addSubView(childViewController.view)
      childViewController.view.frame = view.bounds
      childViewController.view.autoResizingMask = [.flexibleWidth, .flexibleHeight]
      childViewController.didMove(toParentViewController: self)
    }

FilamentoViewController中调用其他viewcontroller的代码:

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)
    {
      let editFilamentoViewController:EditFilamentoViewController = EditFilamentoViewController()
      editFilamentoViewController.cod = indexPath.row
      self.presentViewController(editFilamentoViewController, animated: true, completion: nil)
    }

代码

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

是我想加载到MenuViewController中的那个。

更新2:

MenuViewController是一个CentreViewController。我在中心加载其他视图,菜单从左边开始。

1 个答案:

答案 0 :(得分:1)

有一个内置的控制器满足您的需求(即UISplitViewController),你有没有考虑过这个?

Apple documentation

Sample Tutorial

还有幻灯片菜单库。

slide out menu