2015-01-01 7 views
5

私は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の一番下にスクロールできません。私のコードは動作しません。

私はスイフトと自動レイアウトで作業しています。あなたのビューコントローラでこれを呼び出す

答えて

0

試してみてください。

automaticallyAdjustsScrollViewInsets = false 

あなたが

を好む場合にも、Interface Builderでそれを設定することができます