【发布时间】:2011-12-08 21:11:55
【问题描述】:
这可能是不可能的,但我希望有人知道如何做到这一点。
我有一个应用程序,我只从 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 UI 中三个主要选项卡中的所有内容。所以我只需要一个额外的(小)“附加”数据视图。我想使用 popOver 视图来实现,所以我使用导航栏和弹出按钮设置初始视图,就像在 Utility App 模板中一样。但现在我被困住了。我不知道如何在运行时创建该弹出按钮并使其正确地对 popOver 视图进行 segue。我可以像这样添加按钮:
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 属性设置为我现有的按钮。这也有效,但我仍然无法将该按钮设置为弹出视图的锚点。我可以将导航栏设置为锚点,但这会使其锚定到导航栏中的标题,这看起来很傻。
有什么想法吗?
【问题讨论】:
-
嘿@Flyingdiver 你找到解决办法了吗?
-
是的,制作一个隐藏的 UIView 以显示弹出框并将其移动到您需要的任何位置。
标签: ios ipad uinavigationbar uipopovercontroller