将多个自定义栏按钮添加到自定义导航栏

Posted

技术标签:

【中文标题】将多个自定义栏按钮添加到自定义导航栏【英文标题】:Adding multiple custom bar buttons to custom nav bar 【发布时间】:2015-07-08 18:40:25 【问题描述】:

我需要在 Swift 中的 custom 导航栏的每一端添加两个栏按钮项。我正在使用以下方法,虽然我没有收到任何错误,但什么也没有出现。我正在使用我自己的自定义图标,当我使用界面生成器添加它们时会出现这些图标。显然,这样我只能在每一端添加一个。

@IBOutlet weak var navBar: UINavigationBar!

    override func viewDidLoad() 

            var iconOne = UIImage(named: "iconOne")
            var iconTwo = UIImage(named: "iconTwo")

            var buttonOne:UIBarButtonItem = UIBarButtonItem(image: iconOne, style: UIBarButtonItemStyle.Plain, target: self, action: nil)
            var buttonTwo:UIBarButtonItem = UIBarButtonItem(image: iconTwo, style: UIBarButtonItemStyle.Plain, target: self, action: nil)

            self.navBar.setItems([buttonOne,buttonTwo], animated: true)

    

这是在嵌入导航控制器的视图控制器中实现的。如果我不使用自定义导航栏,我可以使用self.navigationItem.setRightBarButtonItems([buttonOne, buttonTwo], animated: true)。解决方法是什么?

【问题讨论】:

【参考方案1】:

此代码适用于我:

@IBOutlet weak var navBar: UINavigationBar!
@IBOutlet weak var navBarItem: UINavigationItem!

func displayTextInNavBar(text: String) 

    let labelWidth: CGFloat = navBar.frame.width / 6
    let frame = CGRect(x: 0, y: 0, width: labelWidth, height: navBar.frame.height)
    let label = UILabel(frame: frame)

    label.textAlignment = .Right
    label.textColor = UIColor(red: 0/255, green: 127/255, blue: 0/255, alpha: 1)
    label.font = UIFont(name: "Bradley Hand", size: 20)
    label.text = text

    let navBarButtonItem = UIBarButtonItem(customView: label)
    navBarItem.rightBarButtonItem = navBarButtonItem

上面在导航栏的右侧放置了一个标签。如果您想要一个可点击的实际按钮,请改为:

let navBarButtonItem = UIBarButtonItem(title: text, style: .Plain, target: self, action: nil)

如果您希望该按钮在单击时实际执行某些操作,那么请指定一些功能,而不是 nil

【讨论】:

【参考方案2】:

我的解决方案:

var barButton : UIBarButtonItem?

override func viewDidLoad() 
    self.barButton = UIBarButtonItem(title: "Options", style: .plain, target: self, action: nil))
    self.navigationItem.rightBarButtonItems = [barButton] as? [UIBarButtonItem]

【讨论】:

【参考方案3】:

UIBarButtonItem 可以使用自定义视图创建

创建视图 添加UIButtons 布局 使用自定义视图创建UIBarButtonItem 将其添加到导航栏

【讨论】:

这就是我想要做的。我该怎么做? 就像我解释的那样。 在代码中。我懂你的英语。我不明白这个方法。我如何实际创建视图并进行布局? 我描述的每个步骤都是 ios 开发人员 101。它们由苹果记录,并在堆栈溢出时显示数千次。不要太懒惰。

以上是关于将多个自定义栏按钮添加到自定义导航栏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 11导航栏自定义后退按钮问题

iPad导航栏自定义高度

uni-app APP端隐藏导航栏自定义按钮

如何减少iOS导航栏自定义视图的左右间隙

ecshop按自定义导航栏上面的标签最下面的一排文章标签不居中 偏左

Flutter导航栏自定义效果