У меня есть UIPopoverController с подклассом UINavigationController. И родительские и дочерние представления являются UITableviews.
Когда я называю родительское представление первоначально с contentSizeForViewInPopover = (320,480), это работает отлично.
Когда я нажимаю в дочернее представление, я изменяю размер легкой сдобы к contentSizeForViewInPopover = (320,780)
Когда возврат назад к родительскому представлению я не могу заставить легкую сдобу изменять размер назад к contentSizeForViewInPopover = (320,480). легкая сдоба остается в (320,780) размер.
Попытка всего, но просто пропавшие без вести чего-то. Кто-либо знает, как изменяют размер представления с UIPopoverControllers в вышеупомянутом сценарии?
Заранее спасибо!!
Я думаю, что у меня была такая же проблема, и я решил ее, задав размер представления во всплывающем окне каждый раз, когда представление должно было появиться. Как это:
-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; self.contentSizeForViewInPopover = CGSizeMake(320, 444); //Set your own size }
Надеюсь, это вам поможет.
Свойство contentSizeForViewInPopover
контроллера представления устанавливает только размер по умолчанию (начальный) для содержащего UIPopoverController
. Чтобы изменить размер UIPopoverController
в произвольное время, необходимо установить его свойство popoverContentSize . Обратите внимание, что popoverContentSize
является свойством UIPopoverController
и не контроллера представления (так что вам, вероятно, понадобится ссылка на контроллер всплывающего окна).
Чтобы сбрасывать размер всплывающего окна каждый раз, когда контроллер представления становится контроллером вида сверху UINavigationController
, вы можете использовать методы протокола UINavigationControllerDelegate
:
navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (viewController == viewControllerToResize) {
referenceToUIPopoverController.popoverContentSize = CGSizeMake(320,480);
}
}