Ios 带导航控制器的SWRevealViewController-Swift 3

Ios 带导航控制器的SWRevealViewController-Swift 3,ios,swift,uinavigationcontroller,swrevealviewcontroller,Ios,Swift,Uinavigationcontroller,Swrevealviewcontroller,我想制作一个应用程序,其中我的导航栏显示在所有页面上。当我点击侧边菜单的任何一行时(通过SWRevealViewController),我希望打开的页面顶部有一个导航栏。在下图中,我希望在带有“菜单”标签的页面上使用与HomeViewController相同的导航栏。我该怎么做?请帮忙。我是iOS新手。我在Xcode 8和Swift 3中这样做。 编辑:我想要这样的东西:我已将侧菜单按钮放置在“显示视图”控制器上。我可以在运行时在front view控制器上看到它,但是如何连接revealvi

我想制作一个应用程序,其中我的导航栏显示在所有页面上。当我点击侧边菜单的任何一行时(通过
SWRevealViewController
),我希望打开的页面顶部有一个导航栏。在下图中,我希望在带有“菜单”标签的页面上使用与HomeViewController相同的导航栏。我该怎么做?请帮忙。我是iOS新手。我在Xcode 8和Swift 3中这样做。


编辑:我想要这样的东西:我已将侧菜单按钮放置在“显示视图”控制器上。我可以在运行时在front view控制器上看到它,但是如何连接revealviewcontroller的目标和操作,以便打开侧菜单?如果完成此操作,则“菜单”上的导航控制器问题标签页将自动解决

您需要在自己的
导航控制器
中添加
视图控制器
的所有起点,因此在这种情况下,您需要嵌入
视图控制器
,该视图控制器在
导航控制器
中具有菜单标签,并使侧菜单切换到
NavigationController
不是
ViewController


希望我的回答能帮助您

您还需要为sabe bar控制器添加
导航控制器
按照以下步骤操作:

选择侧栏
viewcontroller>转到编辑器菜单>嵌入>单击导航控制器

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) 使将从侧菜单显示的ViewController与从BaseViewController继承的带有菜单标签的ViewController一样,并在其viewDidLoad中调用super.viewDidLoad()


4) 在导航控制器中嵌入您将从侧菜单显示的ViewController

假设菜单的出口是btn_菜单。在控制器的视图中,我以编程方式设置了bar按钮的动作和目标

 btn_Menu.target = self.revealViewController()
 btn_Menu.action = #selector(SWRevealViewController.revealToggle(_:))
看看你需要的这个图像结构。抱歉,不太清楚,但也许可以解决您的问题:


使用
容器视图可能会有所帮助

用容器视图替换中间(内容)中的UIVIEW,该容器可以是<代码> UINavigationController < /代码>。为了避免出现2个导航栏,您可以隐藏ContainerView的导航栏

蓝色突出显示的视图是正在实施侧菜单的控制器内的
ContainerView


请检查已编辑的问题。我希望主视图控制器上有相同的导航栏,并且视图控制器上有“菜单”标签。您希望侧栏使用带有“菜单”标题的相同手动导航栏吗?是的,我希望“菜单”上有相同的导航栏标题页和HomeViewControllerOut视图控制器必须保存在UINavigation控制器中。如何实现此目的?将Navigation controller->RevealController->front(Home controller)->Reafter(SideMenuController)@Amanpret请检查编辑question@Dia请核对答案。可能是你想要的。请检查编辑的问题。我希望主视图控制器上有相同的导航栏,并且视图控制器上有“菜单”Label您可以从uiviewcontroller“BaseViewController”生成子类,并在其viewDidLoad中以编程方式将按钮添加到导航栏,您将从菜单中显示的所有ViewController都继承自“BaseViewController”,并将其嵌入到导航控制器中。我现在将为您添加一个新的答案,其中包含详细信息问题是我在哪里创建那个按钮的出口?因为该控制器的类被设置为主视图控制器上的SWRevealViewControllerPut按钮。在家里设置插座。我在最初的问题中已经这样做了,但这并没有达到在“菜单”标签pageRevealController上设置导航栏的目的,它只是用来设置前后。在这里,我们将后设为侧菜单,前设为主菜单。当您运行应用程序时,您将看到主菜单,因为我们将其设置为显示的前。。你检查过了吗?是的,它起作用了。我只是担心导航栏。怎么做?