私はscrollview内にtableviewを持つviewControllerを持っています。SWIFTで子テーブルビューの高さに合わせてスクロールビューの高さを調整します
テーブルビューの高さと、スクロールビューの高さをプログラムで更新する必要があります(スクロールビューの高さは、tableviewの高さによって異なります)。
-my View Controller
-View
-ScrollView
-Container View
-TableView
だから、私のViewControllerのviewDidAppearでこのコードを書いた:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var frame:CGRect = self.tableView.frame
frame.size.height = tableView.contentSize.height
self.tableView.frame = frame
scrollView.contentSize=CGSizeMake(scrollView.frame.size.width, tableView.frame.origin.y + tableView.frame.height)
}
私はコンソールで確認する場合は、viewDidAppearは全てcellForRowAtIndexPath前に呼び出されます。この場合、すべてが私の望むように機能します。
私のviewControllerでは、私はmodalViewControllerを開くボタンを持っています。このmodalViewControllerでは、新しいデータをテーブルビューに追加します(つまり、新しいセル)。
私がmodalViewControllerをdismissViewControllerAnimatedで閉じると、viewDidAppearが呼び出されますが、すべてのcellForRowAtIndexPathの後に終了します。 私のviewControllerが正しく表示されず、tableviewが切り取られ、tableViewの一番下にスクロールできません。私のコードは動作しません。
私はスイフトと自動レイアウトで作業しています。あなたのビューコントローラでこれを呼び出す