我正在使用Swift开发iOS应用程序,使用的是Xcode7.0.1和TableViewController。当我点击行时,希望能够展开并在再次点击时折叠。我正在遵循gitHub上的教程。现在我面临错误
我的UITableViewCell类代码:
Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer
for the key path "frame" from <X.expandTips 0x145d8d20> because it is not registered as an observer.'
我希望以下代码行引起了问题。我的UITableViewCell类代码:
func checkHeight(){
expandaple_view.hidden = (frame.size.height < expandTips.expandedHeight)
}
func WatchFrameChanges() {
addObserver(self , forKeyPath: "frame", options: .New, context: nil )
checkHeight()
}
func ignoreFrameChanges(){
removeObserver(self, forKeyPath: "frame")
}
override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
if keyPath == "frame"{
checkHeight()
}
}
而在我的TableViewController代码中:
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
(cell as! expandTips) . WatchFrameChanges()
}
override func tableView(tableView: UITableView, didEndDisplayingCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
(cell as! expandTips) . ignoreFrameChanges()
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if (indexPath == selectedIndexPath ){
return expandTips.expandedHeight
}else {
return expandTips.defaultHeight
}
}
我是iOS的新手。我希望这一定是一个简单的问题。请有人帮助我解决这个问题。
我不知道需要在这里发布哪些详细信息。如果我需要添加更多细节,请评论。