Swift 2 - hitTest 函数 - 发现致命错误 nil
Posted
技术标签:
【中文标题】Swift 2 - hitTest 函数 - 发现致命错误 nil【英文标题】:Swift 2 - hitTest function - fatal error found nil 【发布时间】:2016-01-21 11:20:10 【问题描述】:我在UIScrollView
中有一个底部栏UIView
,里面有两个按钮。我正在使用hitTest
功能,以便仅为两个按钮启用user interaction
。
代码只有在我触摸底部栏时才有效,但是,当我触摸屏幕的任何其他部分时,应用程序会崩溃说:
致命错误:在展开可选值时意外发现 nil (lldb)
class HelpBarViewClass: UIView
@IBOutlet var backPageBtn: UIButton!
@IBOutlet var nextPageBtn: UIButton!
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView?
let subview: UIView = super.hitTest(point, withEvent: event)! // fatal error
return subview == self.nextPageBtn || subview == self.backPageBtn ? subview :nil
为什么会出现这个错误?
更新
感谢下面正确代码的回答:
class HelBarViewClass: UIView
@IBOutlet var backPageBtn: UIButton!
@IBOutlet var nextPageBtn: UIButton!
override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView?
let subview = super.hitTest(point, withEvent: event)
return subview == self.nextPageBtn || subview == self.backPageBtn ? subview : nil
【问题讨论】:
【参考方案1】:似乎很明显:super.hitTest
返回了nil
,但你强制解开它。不要这样做。
【讨论】:
你的意思是删除!
?
@SNos 没错。您可以比较可选项和非可选项。
我已经尝试过,但我得到“可选类型 UIView?
的值未解包”
删除显式类型:let subview = ...
谢谢,正在工作中。还有5分钟接受答案。以上是关于Swift 2 - hitTest 函数 - 发现致命错误 nil的主要内容,如果未能解决你的问题,请参考以下文章