带 NavigationController 的 SWRevealViewController - Swift 3
SWRevealViewController with NavigationController - Swift 3
我想制作一个应用程序,让我的导航栏出现在所有页面上。当我点击任何一行侧面菜单(通过 SWRevealViewController
完成)时,我希望打开的页面顶部有一个导航栏。在下图中,我想要与具有 "Menu" 标签的页面上的 HomeViewController 相同的导航栏。我怎样才能做到这一点?请帮忙。我是 iOS 的新手。我在 Xcode 8 和 Swift 3 中这样做。
编辑:我想要这样的东西: 我已经将侧面菜单按钮放在显示视图控制器上。我可以在运行时在前视图控制器上看到它,但是如何连接 revealviewcontroller 的目标和操作,以便打开侧面菜单?如果这样做,那么我在 "Menu" 标签页上的导航控制器问题将自动解决
您需要将 ViewControllers
的所有起点添加到它们自己的 NavigationController
中,因此在这种情况下,您需要嵌入具有菜单标签的 ViewController
a NavigationController
并使侧边菜单转到 NavigationController
而不是 ViewController
希望我的回答对您有所帮助
您还需要为 sabe bar Controller 添加 Navigation Controller
按照以下步骤操作:
Select侧栏viewcontroller > go to Editior menu > Embed in > Click Navigation Controller
1) 创建一个名为 'BaseViewController'
的新 ViewController Class
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,就像带有菜单标签的那个继承自 BaseViewController 并在它的 viewDidLoad 中调用 super.viewDidLoad()
4) 将您将从侧边菜单中显示的 viewController 嵌入到导航控制器中
假设菜单出口为btn_Menu。在控制器的视图中确实加载了我以编程方式设置条形按钮的动作和目标。
btn_Menu.target = self.revealViewController()
btn_Menu.action = #selector(SWRevealViewController.revealToggle(_:))
看看你需要的这个图像结构。抱歉不是很清楚,但也许可以解决您的问题:
使用 Container View
可能会有帮助。
将中间的 UIView (Content) 替换为 Container View,该容器可以是 UINavigationController
。为了避免 2 NavigationBars,您可以隐藏 ContainerView 的 NavigationBar。
蓝色突出显示的视图是 Controller 内的 ContainerView
,它正在实现 SideMenu
我想制作一个应用程序,让我的导航栏出现在所有页面上。当我点击任何一行侧面菜单(通过 SWRevealViewController
完成)时,我希望打开的页面顶部有一个导航栏。在下图中,我想要与具有 "Menu" 标签的页面上的 HomeViewController 相同的导航栏。我怎样才能做到这一点?请帮忙。我是 iOS 的新手。我在 Xcode 8 和 Swift 3 中这样做。
编辑:我想要这样的东西:
您需要将 ViewControllers
的所有起点添加到它们自己的 NavigationController
中,因此在这种情况下,您需要嵌入具有菜单标签的 ViewController
a NavigationController
并使侧边菜单转到 NavigationController
而不是 ViewController
希望我的回答对您有所帮助
您还需要为 sabe bar Controller 添加 Navigation Controller
按照以下步骤操作:
Select侧栏viewcontroller > go to Editior menu > Embed in > Click Navigation Controller
1) 创建一个名为 'BaseViewController'
的新 ViewController Class2) 在 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,就像带有菜单标签的那个继承自 BaseViewController 并在它的 viewDidLoad 中调用 super.viewDidLoad()
4) 将您将从侧边菜单中显示的 viewController 嵌入到导航控制器中
假设菜单出口为btn_Menu。在控制器的视图中确实加载了我以编程方式设置条形按钮的动作和目标。
btn_Menu.target = self.revealViewController()
btn_Menu.action = #selector(SWRevealViewController.revealToggle(_:))
看看你需要的这个图像结构。抱歉不是很清楚,但也许可以解决您的问题:
使用 Container View
可能会有帮助。
将中间的 UIView (Content) 替换为 Container View,该容器可以是 UINavigationController
。为了避免 2 NavigationBars,您可以隐藏 ContainerView 的 NavigationBar。
蓝色突出显示的视图是 Controller 内的 ContainerView
,它正在实现 SideMenu