Проблема с уменьшением ширины UIPopOverController, когда navigationController подталкивает новое представление (включая скриншоты)

Хорошо, у меня есть мнение, что мы назовем 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 именно так, как мне нужно. Как и в случае с FYI, в моем методе 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 раза шире, как если бы два склеены или что-то в этом роде, но он все равно уже, чем исходная ширина.

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

Спасибо

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

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


person Stephen J.    schedule 29.04.2011    source источник


Ответы (1)


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

Например:

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

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

person yuvalz    schedule 11.10.2011