我在UITabBarController中嵌入了三个视图控制器。每个视图控制器都嵌入在导航控制器中。
我的应用程序的逻辑是在所有标签栏视图控制器上都有导航右侧栏按钮(即"菜单"按钮,应从每个视图控制器看到)。实现此目的的最简单方法是将此按钮分别添加到所有导航控制器。但我认为这不是一个好的解决方案,因为这个按钮的代码必须在每个导航控制器中重复。
有没有办法在UITabBarController的所有控制器上都有相同的导航右键?
(在我的应用中我没有使用故事板)
答案 0 :(得分:2)
扩展名 UIViewController 创建一个导航栏在您的project.navigation栏中的ViewController的任何地方进行方法调用都会出现右键菜单。
例如
import UIKit
extension UIViewController {
func setupNavigationBar(title: String) {
// back button without title
//self.navigationController?.navigationBar.topItem?.title = ""
//back button color
//self.navigationController?.navigationBar.tintColor = UIColor.white
//set titile
self.navigationItem.title = title
//set text color & font size
//self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.init(red: 251/255, green: 251/255, blue: 251/255, alpha: 1) , NSFontAttributeName:UIFont.systemFont(ofSize: 19)]
//set background color without gradian effect
//self.navigationController?.navigationBar.barTintColor = UIColor.init(red: 134/255, green: 145/255, blue: 152/255, alpha: 1)
//show right button
let rightButton = UIBarButtonItem(image: #imageLiteral(resourceName: "Menu"), style: .plain, target: self, action: #selector(menu))
//right Bar Button Item tint color
//self.navigationItem.rightBarButtonItem?.tintColor = UIColor.init(red: 219/255, green: 219/255, blue: 219/255, alpha: 1)
//show the Menu button item
self.navigationItem.rightBarButtonItem = rightButton
//show bar button item tint color
//self.navigationItem.rightBarButtonItem?.tintColor = UIColor.init(red: 219/255, green: 219/255, blue: 219/255, alpha: 1)
}
func menu(){
print("showSlideOutMane fire ")
}
}
答案 1 :(得分:0)
您可以创建一个新的UIViewController类,它将一个条形按钮项添加到其导航控制器的导航栏("菜单"例如)。然后您的其他视图控制器可以从您的新UIViewController类继承。这样,您只需编写一次用于添加条形按钮的代码。
答案 2 :(得分:0)
UITabBarController继承自UIViewController。 Tehnicly你可以在UINavigationController中推送UITabBarController。然后在UITabBarController中你可以设置UIBarButtonItem。