#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
.