UIBarButton 没有改变
Posted
技术标签:
【中文标题】UIBarButton 没有改变【英文标题】:UIBarButton not changing 【发布时间】:2015-01-08 00:54:09 【问题描述】:@IBOutlet weak var playStopButton: UIBarButtonItem!
var playStopArray = [UIBarButtonSystemItem.Pause, UIBarButtonSystemItem.Play]
var index = 0
@IBOutlet weak var image: UIImageView!
@IBAction func playButton(sender: UIBarButtonItem)
println("pressed")
playStopButton = UIBarButtonItem(barButtonSystemItem: playStopArray[index], target: self, action: "startMusic:")
println("here")
if index == 0
index = 1
else
index = 0
func startMusic()
println("test")
我希望栏按钮更改为暂停符号,但没有运气。它同时打印“pressed”和“here”,但“test”不起作用。为什么图像没有变化?
【问题讨论】:
你在任何地方都调用 startMusic() 吗? 你去做作业的时候playStopButton是nil吗? 我不认为你的方法是正确的。您无需更改插座。您的 IBAction 发送一个 sender 参数。只需使用 sender.setTitle(_:forState: .Normal) 更改按钮上的文本。 我不想改变文字——我想让符号不同。 【参考方案1】:你的方法是错误的。
在下面一行中,playStopButton = UIBarButtonItem(barButtonSystemItem: playStopArray[index], target: self, action: "startMusic:")
您实际上是在创建UIBarButtonItem
的新实例。此按钮实际上并未添加到视图中。而不是通过 Interface Builder 添加UIBarButtonItem
。您可以通过编程方式创建它。
阅读此问题以获取更多信息。 toggle between UIBarButtonSystemItemPlay and UIBarButtonSystemItemPause
var playButton:UIBarButtonItem!
var pauseButton:UIBarButtonItem!
func setup()
playButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Play, target: self, action: "startMusic:")
pauseButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Pause, target: self, action: "stopMusic:")
func startMusic:(button : UIBarButtonItem)
self.navigationItem.rightBarButtonItem = pauseButton // Switch to pause.
//Other code.
func stopMusic:(button : UIBarButtonItem)
self.navigationItem.rightBarButtonItem = playButton// Switch to play.
//Other code.
【讨论】:
如何在 Swift 中做到这一点? 你有工具栏或导航栏吗? 出于好奇,我将如何为工具栏执行此操作? ***.com/questions/1078597/…【参考方案2】:这是我在 Swift 中的方法
func configureBars()
isPlaying = false
// UIToolbar
let pickBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Search,
target: self,
action: "pickSong")
let playBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Play,
target: self,
action: "playPause")
let pauseBarButtonItem = UIBarButtonItem(barButtonSystemItem: .Pause,
target: self,
action: "playPause")
let leftFlexBBI = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace,
target: nil,
action: nil)
let rightFlexBBI = UIBarButtonItem(barButtonSystemItem: .FlexibleSpace,
target: nil,
action: nil)
playItems = [pickBarButtonItem, leftFlexBBI, playBarButtonItem, rightFlexBBI]
pauseItems = [pickBarButtonItem, leftFlexBBI, pauseBarButtonItem, rightFlexBBI]
toolbar.items = playItems
访问http://www.raywenderlich.com/36475/how-to-make-a-music-visualizer-in-ios 或者你可以查看我的 Github https://github.com/Charles-Hsu/MusicVisualizer
【讨论】:
以上是关于UIBarButton 没有改变的主要内容,如果未能解决你的问题,请参考以下文章
UIBarButton 未在 UINavigationBar 中显示
带有 CustomView 和边框的 UIBarButton
有没有办法改变 Button.addActionListener 的行为?