Это может быть невозможно, но я надеюсь, что у кого-то будет идея, как это сделать.
У меня есть приложение, которое я переношу с 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, поэтому я установил начальное представление с панелью навигации и кнопкой всплывающего окна, как в шаблоне служебного приложения. Но теперь я застрял. Я не могу понять, как создать эту кнопку всплывающего окна во время выполнения и заставить ее правильно переходить к представлению popOver. Я могу добавить такую кнопку:
UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] initWithTitle: @"Modem" style: UIBarButtonItemStylePlain target: self action: @selector(togglePopover:)];
self.navBar.topItem.rightBarButtonItem = flipButton;
, но получаю исключение: «NSInternalInconsistencyException», причина: «UIStoryboardPopoverSegue должен быть представлен из элемента кнопки панели или представления». Я почти уверен, что это потому, что у меня нет привязки для перехода popOver. Кнопки нет в раскадровке, поэтому я не могу ее там установить. И я не могу найти API, чтобы установить его во время выполнения.
Я также попытался создать кнопку в IB, но не в иерархии представлений, а затем просто установил свойство rightBarButtonItem для моей существующей кнопки.Это тоже работает, но я все еще не могу установить эту кнопку в качестве привязки для всплывающего окна. Я могу установить панель навигации в качестве привязки, но это делает ее привязкой к заголовку на панели навигации, что выглядит глупо.
Есть идеи?