在NavigationBar中添加多个按钮

时间:2018-01-29 18:16:13

标签: ios swift uinavigationbar

我的应用要求我在导航栏中添加多个按钮。 这是我的导航栏的图像

enter image description here

我如何实现这种设计?

5 个答案:

答案 0 :(得分:2)

您可以通过各种方式配置视图控制器的navigationItem以实现此设计。

左侧

要允许左侧系统“后退按钮”旁边的其他按钮:

navigationItem.leftItemsSupplementBackButton = true

这允许您为圆形图像添加左栏按钮项目:

navigationItem.setLeftBarButtonItem(imageItem, animated: trueOrFalse)

imageItem将是使用customView或image初始化的UIBarButtonItem,如此处的其他一些答案所述。

对于后退按钮本身,实现简单的“<”如果没有显示上一个视图的标题或显示“< Back”,您可以打开故事板并将前一个视图控制器的后退按钮文本设置为单个空格,如this post中所述。

标题区

对于标题区域,如其他答案所述:

navigationItem.titleView = (a custom view)

右侧

对于右侧,您可以添加多个按钮:

navigationItem.setRightBarButtonItems([button1, button2, button3, button4], animated: trueOrFalse)

这里,button1,button2,button3和button4都是UIBarButtonItems。您可能会initialize these buttons with images

看起来您还想将导航栏的tintColor设置为黑色,以便条形按钮呈现为黑色:

navigationController?.navigationBar.tintColor = .black

所有这些代码都将在视图控制器中完成,通常在viewDidLoad中完成,除非您需要动态更改视图控制器内容更改时显示的按钮。

答案 1 :(得分:1)

您可以创建自己的视图并放下图像,标签等... 之后,你写道:

self.navigationItem.titleView = yourView

答案 2 :(得分:1)

UINavigationItem有一个名为rightBarButtonItems的属性,这需要一个UIBarButtonItem数组,在您的情况下,每个按钮都是。{/ p>

您可以使用UIBarButtonItem上的初始化工具来指定图片和样式:

  

init(image:UIImage?,style:UIBarButtonItemStyle,target:Any?,action:Selector?)

     

使用指定的图像和其他属性初始化新项目。

在视图控制器上,您可以通过访问者navigationItem访问导航项,如果您将视图控制器嵌入UINavigationController内,则需要访问该实例上的navigationItem而不是视图控制器

答案 3 :(得分:1)

您可以在导航栏中添加UIView,以便在该视图中添加多个按钮。

答案 4 :(得分:1)

试试这个:

let callImage   = UIImage(named: "call")!
let videoImage   = UIImage(named: "video")!
let searchImage = UIImage(named: "search")!

let callButton   = UIBarButtonItem(image: callImage,  style: .plain, target: self, action: #selector(didTapCallButton))
let videoButton = UIBarButtonItem(image: searchImage,  style: .plain, target: self, action: #selector(didTapVideoButton))
let searchButton = UIBarButtonItem(image: searchImage,  style: .plain, target: self, action: #selector(didTapSearchButton))

navigationItem.rightBarButtonItems = [callButton, videoButton, searchButton]

选择方法

func didTapCallButton(sender: AnyObject){
    ...
}

func didTapVideoButton(sender: AnyObject){
    ...
}

func didTapSearchButton(sender: AnyObject){
    ...
}