Это может быть невозможно, но я надеюсь, что у кого-то появится идея, как это сделать.
У меня есть приложение, которое я переношу с iPhone только на Universal. На iPhone я использую приложение с вкладками. Я использую три вкладки для отображения нормальных данных. У меня есть четвертая вкладка, которая отображается только при выполнении определенных условий. Чтобы добавить вкладку, выполните следующие действия:
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
UITabBarController *tabController = (UITabBarController *) self.rootViewController;
NSMutableArray* newArray = [NSMutableArray arrayWithArray: tabController.viewControllers];
[newArray addObject: [theStoryboard instantiateViewControllerWithIdentifier: @"AdditionalView-Phone"]];
[tabController setViewControllers:newArray animated:YES];
}
Для iPad у меня достаточно места на начальном представлении, чтобы отображать все, начиная с основных трех вкладок в интерфейсе iPhone. Поэтому мне нужно только одно (небольшое) представление для дополнительных данных. Я хотел сделать это, используя представление popOver, поэтому я установил начальное представление с помощью панели Nav и кнопки Popover, как в шаблоне Utility App. Но теперь я застрял. Я не могу понять, как создать эту кнопку popover во время выполнения и сделать так, чтобы segue отображался в popOver. Я могу добавить такую кнопку:
UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] initWithTitle: @"Modem" style: UIBarButtonItemStylePlain target: self action: @selector(togglePopover:)];
self.navBar.topItem.rightBarButtonItem = flipButton;
но я получаю исключение: "NSInternalInconsistencyException", причина: "UIStoryboardPopoverSegue должен быть представлен из элемента кнопки панели или вида". Я уверен, что это потому, что у меня нет набора привязок для popOver segue. Кнопка не существует в раскадровке, поэтому я не могу ее установить. И я не могу найти API, чтобы установить его во время выполнения.
Я также попытался создать кнопку в IB, но не в иерархии представлений, а затем просто установил свойство rightBarButtonItem для моей существующей кнопки. Это также работает, но я все еще не могу установить эту кнопку в качестве якоря для представления popover. Я могу установить панель навигации в качестве якоря, но это делает привязку к заголовку на панели навигации, что выглядит глупо.
Любые идеи?