解决方案 »

  1.   

    你的bgMusic是个UIButton吗?setImage方法本身是接受一个Optional的值(?),是允许传入的图片为nil的,playBgMusic方法检查过没有?
      

  2.   

    bgMusic是一个UIButton
    playBgMusic应该是没问题
    var playImage=UIImage(named: "play.png")
        var buttomState=false
        func playBgMusic(){
            let musicPath=NSBundle.mainBundle().pathForResource("Music_background", ofType: "mp3")
            let url=NSURL(fileURLWithPath: musicPath!)
            audioPlayer=AVAudioPlayer(contentsOfURL: url, error:nil)
            audioPlayer.numberOfLoops = -1
            audioPlayer.volume=1
            audioPlayer.prepareToPlay()
            audioPlayer.play()
            
        }
      

  3.   

    改成如下试试:
    bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)UIImage(named: "") 返回的是一个optional的uiimage对象。
      

  4.   

    那就要看,你的uiimage对象是否被成功创建了。
      

  5.   

    那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
      

  6.   

    那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
    点击项目,找到 build phases, 看这张图片存不存在于 "copy bundle resources" 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。
      

  7.   

    那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
    点击项目,找到 build phases, 看这张图片存不存在于 "copy bundle resources" 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。
    有这张照片,
      

  8.   

    那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
    点击项目,找到 build phases, 看这张图片存不存在于 "copy bundle resources" 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。
    有这张照片,
    还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 
      

  9.   

    你的bgMusic这个Button的约束怎么写的?
      

  10.   

    不会是setImage:forStatus:本身的问题,你看看API:func setImage(image: UIImage?, forState state: UIControlState) // default is nil. should be same size if different for different states
    接受的是一个?值,你学过Swift应该知道,这表示该方法支持一个nil值。
    问题可能是你的button的约束有问题,导致成功调用setImage后更新了button的布局
      

  11.   

    我用的是自动约束,按理说它optional接受nil,但是为何就中断那句,提示说遇到nil意外
      

  12.   

    那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
    点击项目,找到 build phases, 看这张图片存不存在于 "copy bundle resources" 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。
    有这张照片,
    还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
    点击项目,找到 build phases, 看这张图片存不存在于 "copy bundle resources" 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。
    有这张照片,
    还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
    点击项目,找到 build phases, 看这张图片存不存在于 "copy bundle resources" 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。
    有这张照片,
    还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 那就要看,你的uiimage对象是否被成功创建了。
    我这张图片存在啊。。为什么会创建失败呢?怎么解决啊
    点击项目,找到 build phases, 看这张图片存不存在于 "copy bundle resources" 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。
    有这张照片,
    还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 
    移动进去,还是不行
      

  13.   

    感谢两位大神的帮助,我找到我错在哪里了,中途可能不小心丢失了变量和控件的绑定,导致那个bgMusic变量并没有与对应控件成功对应。不好意思浪费你们的时间了,不过还是学了一些检查的方法,谢谢