Может ли UIPopoverController получить свой размер из NIB контроллера вида? - PullRequest
2 голосов
/ 22 ноября 2010

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

Я знаю, что могу указать размер области содержимого поповера в коде, но разве я не смогу это сделать в конструкторе интерфейсов?

В методе viewDidAppear моего пользовательского контроллера я распечатываю ширину и высоту границы представления, но странным образом они оба равны 0. Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 05 декабря 2010

Вы не можете указать UIViewController's contentSizeForViewInPopover в кончике. Мне нравится устанавливать его в viewDidLoad.

Возможно, ваш "распечатанный" код неверен. Легко запутаться в тонкостях вызова NSLog. Попробуйте это так:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    NSLog(@"%@", NSStringFromCGSize(self.view.bounds.size));
}

Если это не сработает, то происходит что-то еще.

1 голос
/ 19 августа 2014

Да, вы можете сделать это из раскадровки:

  1. Установите размер корневого представления в контроллере представления.
  2. В контроллере вида вы можете указать явный размер (который будет заполнен по умолчанию, когда вы даете вашему виду размер), вот картинка:

Xcode screenshot

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

...