SWRevealViewController与NavigationController - Swift 3

时间:2017-01-04 10:41:32

标签: ios swift uinavigationcontroller swrevealviewcontroller

我想创建一个应用程序,我的导航栏出现在所有页面上。当我点击侧面菜单的任何一行(通过SWRevealViewController完成)时,我希望打开的页面顶部有一个导航栏。在下图中,我想要与具有“菜单”标签的页面上的HomeViewController相同的导航栏。我怎样才能做到这一点?请帮忙。我是iOS新手。我在Xcode 8和Swift 3中这样做。 Here is the image

编辑:我想要这样的事情:enter image description here我已将侧面菜单按钮放在显示视图控制器上。我可以在运行时在前视图控制器上看到它,但是如何连接目标和revealviewcontroller的动作,以便侧面菜单打开?如果这样做,那么“菜单”标签页面上的导航控制器问题将自动解决

5 个答案:

答案 0 :(得分:1)

假设菜单的出口是btn_Menu。在控制器的视图中加载我以编程方式设置了条形按钮的动作和目标。

 btn_Menu.target = self.revealViewController()
 btn_Menu.action = #selector(SWRevealViewController.revealToggle(_:))

查看您需要的此图像结构。抱歉不太清楚但也许可以解决您的问题:

enter image description here

答案 1 :(得分:0)

您需要在自己ViewControllers中添加NavigationController的所有起点,因此在这种情况下,您需要嵌入ViewController,其中包含菜单标签{ {1}}并将侧边菜单设为NavigationController而不是NavigationController

希望我的回答可以帮助你

答案 2 :(得分:0)

您还需要为sabe bar Controller添加/** * Does some magic. * * @HTTP 201 Successful Request. */ @PostMapping(value = "/{id}", params = "action=doMagic") @RolesAllowed("ADMIN") public User restoreUser(@PathVariable Long id) { User user = userService.restore(id); return ResponseEntity.ok(project); } 请按照以下步骤操作:

选择侧栏Navigation Controller

答案 3 :(得分:0)

1)创建一个名为“BaseViewController”的新ViewController类

2)在BaseViewController viewDidLoad中添加以下代码并更改图像名称和目标,同时为菜单添加左键

  let btn1 = UIButton(type: .custom)
    btn1.setImage(UIImage(named: "imagename"), for: .normal)
    btn1.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
    btn1.addTarget(self, action: #selector(Class.Methodname), for: .touchUpInside)
    let item1 = UIBarButtonItem(customView: btn1)

    let btn2 = UIButton(type: .custom)
    btn2.setImage(UIImage(named: "imagename"), for: .normal)
    btn2.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
    btn2.addTarget(self, action: #selector(Class.MethodName), for: .touchUpInside)
    let item2 = UIBarButtonItem(customView: btn2)  

    self.navigationItem.setRightBarButtonItems([item1,item2], animated: true)

3)使您将从侧边菜单中显示的viewControllers(如带有菜单标签的viewControllers)继承自BaseViewController,并在其viewDidLoad中调用super.viewDidLoad()

4)嵌入你将在navigationController

的侧边菜单中显示的viewControllers

答案 4 :(得分:0)

使用Container View可能有所帮助。

用容器视图替换中间(内容)中的UIView,该容器可以是UINavigationController。要避免使用 2 NavigationBars ,您可以隐藏ContainerView的NavigationBar。

蓝色突出显示的视图是正在实施SideMenu的控制器中的ContainerView

enter image description here