欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Swift在导航栏多个按钮_Swift设置navigation左右两侧多个按钮

程序员文章站 2021-12-28 21:39:27
...

IOS App开发难免会遇到导航栏右上角需要显示2个按钮的时候,今天就讲一下Swift在导航栏左侧或者右侧放置多个按钮例子,使用 navigationItem.leftBarButtonItem 和 navigationItem.rightBarButtonItem 可以很方便的分别设置导航栏左侧和右侧按钮,但一侧只能有一个按钮。如果想要在一侧使用多个按钮,可以通过 leftBarButtonItems 和 rightBarButtonItems 来实现。


设置按钮

override func viewDidLoad(){
    super.viewDidLoad()
    
    //navitem search 搜索按钮
    let buttonSearch = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 20, height: 20))
    buttonSearch.setImage(UIImage.init(named: "home_navitem_search"), for: UIControlState.normal)
    buttonSearch.addTarget(self, action: #selector(navigationItemSearchAction), for: UIControlEvents.touchUpInside)
    let barButtonSearch = UIBarButtonItem(customView: buttonSearch)
    
    //navitem 客服按钮
    let buttonService = UIButton.init(frame: CGRect.init(x: 0, y: 0, width: 20, height: 20))
    buttonService.setImage(UIImage.init(named: "customer_service"), for: UIControlState.normal)
    buttonService.addTarget(self, action: #selector(navigationItemServiceAction), for: UIControlEvents.touchUpInside)
    let barButtonService = UIBarButtonItem(customView: buttonService)
    
    //按钮间的空隙
    let gap = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil)
    gap.width = 12;
    
    //用于消除右边边空隙,要不然按钮顶不到最边上
    let spacer = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.fixedSpace, target: nil, action: nil)
    spacer.width = -5;
    
    //设置按钮(注意顺序)
    self.navigationItem.rightBarButtonItems = [spacer, barButtonSearch, gap, barButtonService]
    
}


点击事件

//搜索
@objc func navigationItemSearchAction() {
    print("搜索按钮点击")
}

//客服
@objc func navigationItemServiceAction() {
    print("客服按钮点击")
}