2

У меня возникли проблемы с представлением содержимого в popover. Я использую следующий код, чтобы настроить popover с контроллером представления, который я создаю из раскадровки. -Контроллер, в котором я представлении поповер находится внутри контроллера навигации:iPad: содержимое не изменено, чтобы соответствовать popover

MyViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
    viewController.contentSizeForViewInPopover = CGSizeMake(382, 502); 
    UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController:viewController]; 

    self.popoverController = popover; //self.popoverController is a private property of type UIPopoverController 
    [self.popoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

здесь возникает проблема: Когда я нажимаю кнопку левой штангой на поповер показывает правильный размер с правильным содержанием, но просмотр содержимого не изменяется до размера popover. Видно только фрагмент представления контента, который «покрыт popover».

У меня такая же процедура, что и рабочий стол, который отлично работает - стол установлен на popover. Я также попытался установить размер самого контроллера popover, как это предлагается here. И я попробовал некоторые настройки с пружинами и распорками управляемого контроллера. Но результат всегда один и тот же.

Теперь я действительно исчерпал идеи, что я мог бы попробовать, или то, что я, возможно, делаю неправильные/недостающие ... HELP :(

Заранее спасибо!

ответ

1

TableView подстраивается размер контроллера представления контейнера оно помещается в. Это является особенностью UITableViewController. Когда вы представить TableView по UIPopoverController, то поповер определяет размер для таблицы.

Этот механизм не работает для всех , поэтому вам необходимо установить размер вашего представления как Что ж.

+0

Большое спасибо. Иногда решения так близки :) Я, наконец, получил его для работы с вашим советом и инструкциями из [здесь] (http://stackoverflow.com/questions/11161909/how-to-use-storyboard-to-make-popover- это-можно-использовать-в-коде) Я также попробовал это, подключив представление контроллера представления через IBOutlet и программно определяя размер после его создания, но это не сработало. Можете ли вы указать мне способ изменить размер представления контроллера представления в коде, а не в Interface Builder? – codingPanda

+0

Добро пожаловать! Я так же застрял неделю назад. Изменение размера _should_ работает, если вы позволите своему собственному ViewController изменить размер представления. Кроме того, вы можете дать ему '[viewController setNeedsDisplay];' для запуска процесса.(Пожалуйста, примите ответ, чтобы улучшить мой репорт) – uulhaa

+0

Большое спасибо. – uulhaa

0

Были некоторые изменения между iOS 6 и iOS 7, которые означают, что представления не всегда изменяются как ожидалось. Для обеспечения желаемого поведения можно использовать ряд различных методов и методов. Они включают в себя обеспечение руководства с помощью маски автоматического изменения:

// Resizing behaviour 
self.view.autoresizingMask=UIViewAutoresizingFlexibleWidth+UIViewAutoresizingFlexibleHeight; 

А иногда родительский вид нужно сказать, чтобы изменить размер подвидов, а также.

self.view.autoresizesSubviews=YES; 

В дополнение Matt Нойберг (программирование IOS 7) говорит нам о том, как предотвратить содержание прячась под навигационными брусков (и панели инструментов), используя следующие:

// Stops the view going underneath the navigation bars 
self.edgesForExtendedLayout=UIRectEdgeNone; 

Тогда есть:

[self.view setNeedsLayout]; 

метод, используемый для перерисовки. Первым шагом является изучение того, что существуют все эти странные и прекрасные методы, а второе - найти наиболее экономичную реализацию, чтобы заставить всех работать на вас.

Смежные вопросы