iOSSwift在设置点击buttom换图片时出现中断崩溃

iOS 码拜 10年前 (2015-05-02) 900次浏览 0个评论

我想给buttom点击时换图片,用了如图方法,但是每次点击时都中断,提示fatal error: unexpectedly found nil while unwrapping an Optional value。肿么破?
iOSSwift在设置点击buttom换图片时出现中断崩溃

iOSSwift在设置点击buttom换图片时出现中断崩溃
你的bgMusic是个UIButton吗?setImage方法本身是接受一个Optional的值(?),是允许传入的图片为nil的,playBgMusic方法检查过没有?
iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 1 楼 zhangao0086 的回复:

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

bgMusic是一个UIButton
playBgMusic应该是没问题
iOSSwift在设置点击buttom换图片时出现中断崩溃
iOSSwift在设置点击buttom换图片时出现中断崩溃

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()
        
    }
iOSSwift在设置点击buttom换图片时出现中断崩溃
20分
改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 6 楼 xyb0225 的回复:
Quote: 引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

点击项目,找到 build phases, 看这张图片存不存在于 “copy bundle resources” 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 7 楼 zhanglei5415 的回复:
Quote: 引用 6 楼 xyb0225 的回复:
Quote: 引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

点击项目,找到 build phases, 看这张图片存不存在于 “copy bundle resources” 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。

iOSSwift在设置点击buttom换图片时出现中断崩溃有这张照片,

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 8 楼 xyb0225 的回复:
Quote: 引用 7 楼 zhanglei5415 的回复:
Quote: 引用 6 楼 xyb0225 的回复:
Quote: 引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

点击项目,找到 build phases, 看这张图片存不存在于 “copy bundle resources” 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。

iOSSwift在设置点击buttom换图片时出现中断崩溃有这张照片,

还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 

iOSSwift在设置点击buttom换图片时出现中断崩溃
你的bgMusic这个Button的约束怎么写的?
iOSSwift在设置点击buttom换图片时出现中断崩溃
25分
不会是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的布局

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 11 楼 zhangao0086 的回复:

不会是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的布局

我用的是自动约束,iOSSwift在设置点击buttom换图片时出现中断崩溃按理说它optional接受nil,但是为何就中断那句,提示说遇到nil意外

iOSSwift在设置点击buttom换图片时出现中断崩溃
引用 9 楼 zhanglei5415 的回复:
Quote: 引用 8 楼 xyb0225 的回复:
Quote: 引用 7 楼 zhanglei5415 的回复:
Quote: 引用 6 楼 xyb0225 的回复:
Quote: 引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

点击项目,找到 build phases, 看这张图片存不存在于 “copy bundle resources” 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。

iOSSwift在设置点击buttom换图片时出现中断崩溃有这张照片,

还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 

引用 9 楼 zhanglei5415 的回复:
Quote: 引用 8 楼 xyb0225 的回复:
Quote: 引用 7 楼 zhanglei5415 的回复:
Quote: 引用 6 楼 xyb0225 的回复:
Quote: 引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

点击项目,找到 build phases, 看这张图片存不存在于 “copy bundle resources” 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。

iOSSwift在设置点击buttom换图片时出现中断崩溃有这张照片,

还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 

引用 9 楼 zhanglei5415 的回复:
Quote: 引用 8 楼 xyb0225 的回复:
Quote: 引用 7 楼 zhanglei5415 的回复:
Quote: 引用 6 楼 xyb0225 的回复:
Quote: 引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

点击项目,找到 build phases, 看这张图片存不存在于 “copy bundle resources” 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。

iOSSwift在设置点击buttom换图片时出现中断崩溃有这张照片,

还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 

引用 9 楼 zhanglei5415 的回复:
Quote: 引用 8 楼 xyb0225 的回复:
Quote: 引用 7 楼 zhanglei5415 的回复:
Quote: 引用 6 楼 xyb0225 的回复:
Quote: 引用 5 楼 zhanglei5415 的回复:
Quote: 引用 4 楼 xyb0225 的回复:
Quote: 引用 3 楼 zhanglei5415 的回复:

改成如下试试:

bgMusic.setImage(UIImage(named:"play.png")! , forState: UIControlState.Normal)

UIImage(named: “”) 返回的是一个optional的uiimage对象。

iOSSwift在设置点击buttom换图片时出现中断崩溃
强制解包还是不行啊~

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

我这张图片存在啊。。为什么会创建失败呢?怎么解决啊iOSSwift在设置点击buttom换图片时出现中断崩溃

点击项目,找到 build phases, 看这张图片存不存在于 “copy bundle resources” 下,你的这种情况应该是不存在。点击下方的+将图片资源添加进去就可以了。

iOSSwift在设置点击buttom换图片时出现中断崩溃有这张照片,

还不行的话,可尝试将图片资源移动到images.xcassets 中来管理图片资源,也建议这么做。 

移动进去,还是不行

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

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明iOSSwift在设置点击buttom换图片时出现中断崩溃
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!