をクラッシュするあなたはどんなトラブル
に直面しているなら、私が知っているとオブザーバを削除することを忘れないでください、この
// add observer to your tableView to get its proper height when its
//data is loaded. you can do this in view did load
self.YourTableView.addObserver(self, forKeyPath: "contentSize",options: .new, context: nil)
// override this metod to observe for tableView height change
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?){
if(keyPath == "contentSize"){
if let newvalue = change?[.newKey]
{
let newsize = newvalue as! CGSize
// make height constraint for your table view and set to new size.
// and here you can check if newSize.height is more than required tha you can set it to default
if(newsize.height < defaultHeight)
self.tableViewHeightConstraint.constant = newsize.height
}else{
self.tableViewHeightConstraint.constant = defaultHeight
}
}
}
を試すことができます、 tableView.contentSize.heightは実際のcontentHeightを提供できませんでした。
- は遅延アクションを実行します:
DispatchQueue.main.asyncAfter(締切:DispatchTimeだから、あなたは(tableview`sの高さを設定する)contentHeightを取得したい場合は、二つの方法があります。今()+ 0.1){
// contentHeightを取得しtableView`s枠を設定
}
- はscrollViewデリゲートに正しい高さを得る:
scrollViewDidScroll FUNC
(_ scrollView:UIScrollViewの){
contentHeight = scrollView.contentSize.height
せ}
おかげでVikky。あなたは私の命を救いました。 :)完璧な作業。 – mac