gpt4 book ai didi

swift - 无法更改 UINavigationItem 中 UIButton 的标题

转载 作者:行者123 更新时间:2023-11-30 10:19:15 25 4
gpt4 key购买 nike

在 iOS 8 的 Swift 中,我有一个 UIViewController,使用 UIView() 作为其导航项。

该 View 包含一个 subview - 一个 UIButton,我无法成功调用 setTitle:forState: on

这是我的代码

playButton.setTitle("Play", forState: UIControlState.Normal)
playButton.tintColor = UIColor.grayColor()
playButton.titleLabel?.font = UIFont(name: "LucidaSansUnicode", size: 20)
playButton.addTarget(self, action: "playPressed", forControlEvents: UIControlEvents.TouchUpInside)
playButton.setTranslatesAutoresizingMaskIntoConstraints(false)
transportBar.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.0)
transportBar.addSubview(playButton)
transportBar.addConstraint(NSLayoutConstraint(item: transportBar, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: playButton, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0.0))
transportBar.addConstraint(NSLayoutConstraint(item: transportBar, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: playButton, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0.0))
navigationItem.titleView = transportBar

该按钮最初运行良好 - 设置了“播放”标题,调用 playPushed(),并且我可以成功添加和删除按钮上的目标。

为什么标题没有改变???

此外,当设备方向(和导航栏)旋转时,按钮的 textLabel 最终会自行更新!更新按钮标题后我可以发送一些消息到 UINavigationController 吗???我尝试过 self.navigationController?.navigationBar.setNeedsDisplay()

我尝试查看堆栈溢出,在 setTitle:forState: 调用周围完成诸如 placeenabled = false/true 之类的操作。我记得在transportBar、self.view和navigationItem.titleView上尝试过layoutSubviews()!

有什么线索吗?感谢您的帮助!

下面添加了我的 playPressed() 函数,在 TouchUpInside 上触发:

func playPressed() {
playButton.setTitle("Stop", forState: UIControlState.Normal)
playButton.removeTarget(self, action: "playPressed", forControlEvents: UIControlEvents.TouchUpInside)
playButton.addTarget(self, action: "stopPressed", forControlEvents: UIControlEvents.TouchUpInside)
}

最佳答案

我想,也许你的 String 会被 UIButton 本身的 attributedString 方法覆盖。尝试设置属性字符串:

var attri = NSAttributedString(string: "Your String")
button.setAttributedTitle(attri, forState: UIControlState.Normal)

关于swift - 无法更改 UINavigationItem 中 UIButton 的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28202741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com