Ios 无法将NSMutableArray类型的值分配给UIBarButtonItem类型
我正在开发一个iOS音频应用程序作为一个学习项目。我在其中一个函数中遇到问题,该函数检查播放机是否正在播放或暂停/停止。如果正在播放,则应将按钮栏中的按钮更改为“暂停”按钮;如果已暂停或停止,则应将按钮更改为“播放”按钮。我将按钮栏项目作为NSMutableArray分配给变量“items”,然后对按钮进行必要的更改,然后将“items”分配回按钮栏项目以更新显示 在我的代码中,有一行出现错误:Ios 无法将NSMutableArray类型的值分配给UIBarButtonItem类型,ios,swift,Ios,Swift,我正在开发一个iOS音频应用程序作为一个学习项目。我在其中一个函数中遇到问题,该函数检查播放机是否正在播放或暂停/停止。如果正在播放,则应将按钮栏中的按钮更改为“暂停”按钮;如果已暂停或停止,则应将按钮更改为“播放”按钮。我将按钮栏项目作为NSMutableArray分配给变量“items”,然后对按钮进行必要的更改,然后将“items”分配回按钮栏项目以更新显示 在我的代码中,有一行出现错误: self.toolbar.items = items 错误消息是 无法将NSMutableArra
self.toolbar.items = items
错误消息是
无法将NSMutableArray类型的值分配给UIBarButtonItem类型
我假设我需要转换NSMutableArray,我尝试过使用Array,当我这样做时,错误消失了,但按钮断开了
我的代码的相关部分包括:
@IBOutlet weak var toolbar: UIToolbar!
@IBOutlet var playButton: UIBarButtonItem!
@IBAction func playPausePressed(sender: AnyObject) {
let playbackState = self.player.playbackState as MPMusicPlaybackState
let items = NSMutableArray(array: self.toolbar.items!)
if playbackState == .Stopped || playbackState == .Paused{
self.player.play()
items[2] = self.pauseButton
} else if playbackState == .Playing{
self.player.pause()
items[2] = self.playButton
}
self.toolbar.items = items
}
任何帮助或指导都将不胜感激。
谢谢 我觉得你可以做得更好。您真的需要为您的
项目[2]
在两个不同的按钮之间切换吗
UIBarButtonItem
可以像常规的UIButton
一样使用不同的状态。我假设您希望在播放器暂停/播放时在播放和暂停图像之间切换。你可以通过在你的UIBarButtonim中设置两个不同的图像(setBackgroundImage(u:forState:barMetrics:)
),然后在你的playbackState更改时设置适当的状态来实现这一点。我觉得你可以做得更好。您真的需要为您的项目[2]
在两个不同的按钮之间切换吗
UIBarButtonItem
可以像常规的UIButton
一样使用不同的状态。我假设您希望在播放器暂停/播放时在播放和暂停图像之间切换。您可以通过将两个不同的图像设置到UIBarButtonim(setBackgroundImage(\uOfState:barMetrics:)
),然后在playbackState更改时设置适当的状态来实现此目的。发生错误的原因是NSMutableArray
与SwiftArray
为什么不直接使用本机属性?由于引用语义,不需要创建临时数组
@IBAction func playPausePressed(sender: AnyObject) {
let playbackState = self.player.playbackState as MPMusicPlaybackState
var items = self.toolbar.items!
if playbackState == .Stopped || playbackState == .Paused{
self.player.play()
items[2] = self.pauseButton
} else if playbackState == .Playing{
self.player.pause()
items[2] = self.playButton
}
}
发生此错误的原因是
NSMutableArray
与SwiftArray
为什么不直接使用本机属性?由于引用语义,不需要创建临时数组
@IBAction func playPausePressed(sender: AnyObject) {
let playbackState = self.player.playbackState as MPMusicPlaybackState
var items = self.toolbar.items!
if playbackState == .Stopped || playbackState == .Paused{
self.player.play()
items[2] = self.pauseButton
} else if playbackState == .Playing{
self.player.pause()
items[2] = self.playButton
}
}
playButton是在脚本编辑器中创建的。pauseButton被声明为ViewController类var pauseButton:uiBarButtonim中的变量!playButton是在脚本编辑器中创建的。pauseButton被声明为ViewController类var pauseButton:uiBarButtonim中的变量!这种方法对我有效,谢谢!我添加了一些代码来设置系统项属性,之后效果很好!这种方法对我有效,谢谢!我添加了一些代码来设置系统项属性,之后效果很好!这种方法对我很有效,唯一的缺点是使用带有两个而不是一个按钮的房地产。但它确实让我看到了这个功能,谢谢!这种方法对我很有效,唯一的缺点是使用带有两个而不是一个按钮的房地产。但它确实让我看到了这个功能,谢谢!