2014-10-28 78 views
5

我有一個表格視圖控制器,它可以在viewDidLoad之後設置它的內容。在設置新內容時,我計算了preferredContentSize。在展示popover之前,我可以查詢我的視圖控制器的preferredContentSize,這是正確的。但是在演示之後,我得到了popover的標準大小(320x480)。如果我使用setPopoverContentSize:animated:和之前查詢的值,一切正常。何時尊重內容大小?

我現在的問題是爲什麼在開始時不尊重preferredContentSize?我做錯了什麼?

回答

5

現在我又遇到了同樣的問題。如果我把我的桌子高度計算到viewWillAppear比它的工作原理:

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

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

的代碼是C#,但你可以很容易地將其轉換成Objective-C的或斯威夫特。

+0

這個解決方案對我來說很完美。謝謝:D:D:D:D – 2015-08-21 09:13:03

1

我將測試代碼轉換爲Swift 2.0。

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