2014-10-28 2 views
5

У меня есть контроллер табличного представления, который получает его содержимое после viewDidLoad. При настройке нового содержимого я вычисляю preferredContentSize. Перед представлением popover я могу запросить preferredContentSize моего контроллера представления, что является правильным. Но после презентации я получаю стандартный размер popover (320x480). Если я использую setPopoverContentSize:animated: с ранее запрошенными значениями, все работает.Когда предпочтительнееContentSize соблюдается?

Мой вопрос сейчас, почему он не уважает 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 или Swift.

+0

это решение работает идеально со мной. Спасибо: D: D: D: D –

1

Я преобразовал код тестирования в Swift 2.0.

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 
    tableView.layoutIfNeeded() 
    preferredContentSize.height = tableView.contentSize.height 
} 
Смежные вопросы