Проблема с UIPopoverController, уменьшающимся в ширину, когда NavigationController запускает новый вид (прилагаются скриншоты)

#iphone #cocoa-touch #ipad #width #uipopovercontroller

#iPhone #cocoa-touch #iPad #ширина #uipopovercontroller

Вопрос:

Хорошо, у меня есть представление, которое мы будем называть HomeView. При нажатии определенной кнопки в HomeView UIPopoverController отображается следующим образом:

 self.studyPicker = [[[StudyPickerController alloc] initWithStudyArray:self.studyArray ViewNum:butto.tag] autorelease];

    UINavigationController *navController = [[UINavigationController alloc]  initWithRootViewController:self.studyPicker];

    _studyPicker.delegate = self;
    self.studyPickerPopover = [[[UIPopoverController alloc] initWithContentViewController:navController] autorelease];               

    [self.studyPickerPopover presentPopoverFromRect:CGRectMake(955,60, 22,10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
  

Который отлично работает. Я получаю хороший большой всплывающий контроллер, который отображает мои данные TableView именно так, как мне это нужно. К вашему сведению, в моем методе StudyPickerController viewDidLoad я также устанавливаю это:

     self.contentSizeForViewInPopover = CGSizeMake(1000.0, 610.0);
  

Что позволяет мне сделать размер моего TableView красивым и большим. Проблема, с которой я сталкиваюсь, возникает после того, как я выбираю строку в этом первом TableView. NavigationController отлично запускает новый вид, но затем ширина моего всплывающего контроллера уменьшается вдвое! Это не имеет никакого смысла! Я перепробовал все и не могу понять, что происходит. В новом представлении, называемом ScreenView, он также имеет тот же код в viewDidLoad:

     self.contentSizeForViewInPopover = CGSizeMake(1000.0, 610.0);
  

Интересное наблюдение, которое я сделал, но не знаю, что с ним делать, заключается в том, что если я удаляю код contentForSize из второго представления в TableView или того, который я пытаюсь вставить в контроллер, когда он нажимается, он снова сокращается вдвое, до ширины стандартного всплывающего контроллера, который вы видите, например, в Safari. Но добавление этого кода делает его в 2 раза шире, как будто два склеенных вместе или что-то в этом роде, но он все еще более узкий, чем исходная ширина.

Я не знаю, что здесь происходит, надеюсь, кто-нибудь сможет мне помочь!

Спасибо

Вот изображение ширины, которой оно должно оставаться: введите описание изображения здесь

И вот оно после того, как оно запускает новое представление: введите описание изображения здесь

Ответ №1:

Для каждого представления, которое вы представляете в UIPopoverController , установите свойство contentSizeForViewInPopover

Например:

myViewController.contentSizeForViewInPopover = CGSize(120.0f, 320.0f);

Вам нужно будет учитывать размер UINavigationBar (который вы получаете из UINavigationBar ) внутри UIPopoverController , но в целом это контролирует растяжение и сжатие UIPopoverController .