2015-01-01 6 views
5

Ho un viewController, con un tableview all'interno di una scrollview.Regola l'altezza di scrollview in base all'altezza della sua tableview child in SWIFT

Ho bisogno di aggiornare a livello di programmazione l'altezza della tableview, e quindi, l'altezza della scrollview (l'altezza della scrollview dipende dall'altezza della tabella).

-my View Controller 
    -View 
    -ScrollView 
     -Container View 
     -TableView 

Così ho scritto questo codice nel viewDidAppear della mia viewController:

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) 

} 

Se controllo nella console, viewDidAppear è chiamato prima di tutti i cellForRowAtIndexPath. In questo caso, tutto funziona come voglio io.

Nel mio viewController, ho un pulsante che apre un modalViewController. In questo modalViewController, aggiungo un nuovo dato nel mio tableview (quindi, una nuova cella).

Quando chiudo il mio modalViewController con dismissViewControllerAnimated, viewDidAppear viene chiamato ma DOPO tutto il cellForRowAtIndexPath. My viewController non è visualizzato correttamente, la tableview è ritagliata, non riesco a scorrere fino alla fine della mia tabellaView. Il mio codice non funziona.

Sto lavorando con Swift e layout automatico.

risposta

0

provare a chiamare questo nel vostro controller della vista:

automaticallyAdjustsScrollViewInsets = false 

È anche possibile impostare in Interface Builder, se si preferisce