Как заставить POPOVER UISPLITVIEW видимым в портретном режиме iPad
-
26-09-2019 - |
Вопрос
Я хотел бы сделать Visual View View, когда пользовательские переключатели выключаются с точки зрения пейзажа на вид портрета в UISPLITVIVE IPAD. Хотя пользователь может сделать его видимым, нажав кнопку на баре, но я хочу, чтобы это было автоматизировано для портретного режима.
Решение
Внутри "- (bool)" Метод "," Метод "
Всего наилучшего.
Другие советы
Uisplitviewcontroller отправляет сообщения своему делегату (uisplitviewcontrollerdelegate). Вы можете реализовать эти методы делегата для показать попуклад. Вы можете сделать что-то вроде этого в вашем коде «Контроллер подробностей»:
#pragma mark -
#pragma mark UISplitViewControllerDelegate implementation
- (void)splitViewController:(UISplitViewController*)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem*)barButtonItem
forPopoverController:(UIPopoverController*)pc
{
[barButtonItem setTitle:@"Your 'popover button' title"];
self.navigationItem.leftBarButtonItem = barButtonItem;
}
- (void)splitViewController:(UISplitViewController*)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
self.navigationItem.leftBarButtonItem = nil;
}
Принятый ответ (используя shouldAutorotateToInterfaceOrientation
) не работает для меня. Он либо имеет артефакты вращения (в темуляторах 4,2 и 5,0 iPad) или только показывает только при запуске и никогда не в последующих вращениях (симулятор 4.3). То, что я сделал вместо этого было создание функции небольшого помощника:
- (void)showPopoverInPortrait {
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
[self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
и называть это в пределах - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
и - (void)viewDidLoad
Также обрабатывать запуск.