Поповер не отображается правильно
Я слежу за демонстрацией того, как скрыть левую сторону разделенного вида, когда iPad находится в книжном режиме, и затем показать его как всплывающее окно, когда нажата кнопка на панели инструментов. Я следовал всем шаг за шагом, и это работает (вроде), за исключением того, что когда я нажимаю кнопку, а не в Popover, вид отображается скользящим слева направо. Я также заметил, что могу получить тот же результат, проводя пальцем слева направо вместо нажатия кнопки. Это код, который я использую (тот же код работает правильно в демо).
в View Controller вида, который должен отображаться в Popover:
-(BOOL)splitViewController:(UISplitViewController*)svc
shouldHideViewController:(UIViewController*)vc
inOrientation:(UIInterfaceOrientation)orientation
{
return [self splitViewBarButtonItemPresenter] ? UIInterfaceOrientationIsPortrait(orientation) : NO;
}
-(void)splitViewController:(UISplitViewController *)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem *)barButtonItem
forPopoverController:(UIPopoverController *)pc
{
barButtonItem.title = self.title;
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = barButtonItem;
}
-(void)splitViewController:(UISplitViewController *)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
[self splitViewBarButtonItemPresenter].splitViewBarButtonItem = nil;
}
И в представлении, которое должно отображать Popover:
-(void)setSplitViewBarButtonItem:(UIBarButtonItem *)splitViewBarButtonItem
{
if (_splitViewBarButtonItem != splitViewBarButtonItem){
NSMutableArray *toolbarItems = [self.toolbar.items mutableCopy];
if (_splitViewBarButtonItem) [toolbarItems removeObject:_splitViewBarButtonItem];
if (splitViewBarButtonItem) [toolbarItems insertObject:splitViewBarButtonItem atIndex:0];
self.toolbar.items = toolbarItems;
_splitViewBarButtonItem = splitViewBarButtonItem;
}
}
SplitViewBarButtonItemPresenter
это просто протокол, используемый для делегирования, который должен показывать (как вы уже догадались!) кнопку для всплывающего окна.