2014-10-28 4 views
5

Ho un controller di visualizzazione tabella che ottiene il contenuto impostato dopo viewDidLoad. Quando si imposta il nuovo contenuto, calcolo il preferredContentSize. Prima di presentare il popover, posso interrogare lo preferredContentSize del mio controller di visualizzazione, che è corretto. Ma dopo la presentazione ottengo la dimensione standard del popover (320x480). Se uso setPopoverContentSize:animated: con i valori richiesti prima, tutto funziona.Quando è rispettato preferredContentSize?

La mia domanda ora è perché non rispetta lo preferredContentSize all'inizio? Cosa sto facendo di sbagliato?

risposta

5

Ora ho avuto lo stesso problema un'altra volta. Se ho messo la mia tabella di calcolo altezza in viewWillAppear che funziona:

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

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

Il codice è in C#, ma si può facilmente convertirlo in Objective-C o Swift.

+0

questa soluzione funziona perfettamente con me. Grazie: D: D: D: D –

1

Ho convertito il codice di test in Swift 2.0.

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