2015-01-01 11 views
5

Ich habe eine ViewController, mit einer Tabellenansicht in einem Scrollview.Passen Sie die Höhe von scrollview entsprechend der Höhe seiner Kindtabellenansicht in SWIFT

Ich muss programmatisch die Höhe der Tabellenansicht und dann die Höhe der Bildlaufansicht aktualisieren (scrollview die Höhe hängt von der Höhe der Tabellenansicht ab).

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

Also schrieb ich diesen Code in das viewDidAppear meiner 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) 

} 

Wenn ich in der Konsole überprüfen, viewDidAppear bevor alle cellForRowAtIndexPath genannt wird. In diesem Fall funktioniert alles wie ich will.

In meinem ViewController habe ich eine Schaltfläche, die einen ModalViewController öffnet. In diesem modalViewController füge ich neue Daten in meine Tabellenansicht ein (also eine neue Zelle).

Wenn ich meinen modalViewController mit disneyViewControllerAnimated schließe, wird viewDidAppear aufgerufen, aber AFTER alle cellForRowAtIndexPath. Mein ViewController wird nicht korrekt angezeigt, die Tabellenansicht ist beschnitten, ich kann nicht zum Ende meiner TableView scrollen. Mein Code funktioniert nicht.

Ich arbeite mit Swift und Auto-Layout.

Antwort

0

Versuchen Sie dies in Ihrem View-Controller-Aufruf:

automaticallyAdjustsScrollViewInsets = false 

Sie können einstellen, auch im Interface Builder, wenn Sie bevorzugen

Verwandte Themen