2014-10-28 13 views
5

Ich habe einen Tabellenansicht-Controller, der seinen Inhalt nach viewDidLoad gesetzt bekommt. Beim Einstellen des neuen Inhaltes berechne ich den preferredContentSize. Bevor ich das Popover präsentiere, kann ich die preferredContentSize meines View-Controllers abfragen, was korrekt ist. Aber nach der Präsentation bekomme ich die Standardgröße des Popover (320x480). Wenn ich setPopoverContentSize:animated: mit den vorher abgefragten Werten verwende, funktioniert alles.Wann wird preferredContentSize respektiert?

Meine Frage ist jetzt warum respektiert es nicht die preferredContentSize gleich zu Beginn? Was mache ich falsch?

Antwort

5

Jetzt hatte ich das gleiche Problem ein anderes Mal. Wenn ich in viewWillAppear meine Tischhöhe Berechnung setzen, als es funktioniert:

public override void ViewWillAppear (bool animated) 
{ 
    base.ViewWillAppear (animated); 

    TableView.LayoutIfNeeded(); 
    this.PreferredContentSize = new SizeF (320f, TableView.ContentSize.Height); 
} 

Der Code ist in C#, aber man kann es leicht zu Objective-C oder Swift konvertieren.

+0

Diese Lösung funktioniert perfekt mit mir. Danke: D: D: D: D –

1

Ich konvertierte Testcode zu Swift 2.0.

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    tableView.layoutIfNeeded() 
    preferredContentSize.height = tableView.contentSize.height 
}