ios - 在运行时为弹出 View anchor 创建按钮

标签 ios ipad uinavigationbar uipopovercontroller

这可能是不可能的,但我希望有人知道如何去做。

我有一个应用程序要从 iPhone 移植到 Universal。在 iPhone 上,我使用的是 Tabbed 应用程序。我使用三个选项卡来显示正常数据。我有第四个选项卡,只有在满足某些条件时才会显示。要添加选项卡,我会:

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,我在初始 View 上有足够的空间来显示 iPhone UI 中主要三个选项卡中的所有内容。所以我只需要一个额外的(小的) View 来查看“额外”数据。我想使用 popOver View 来完成它,所以我设置了带有导航栏和弹出按钮的初始 View ,就像在 Utility App 模板中一样。但现在我卡住了。我无法弄清楚如何在运行时创建该弹出按钮并使其正确地转到 popOver View 。我可以这样添加按钮:

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] initWithTitle: @"Modem" style: UIBarButtonItemStylePlain target: self action: @selector(togglePopover:)];
self.navBar.topItem.rightBarButtonItem = flipButton;

但我得到一个异常:'NSInternalInconsistencyException',原因:'UIStoryboardPopoverSegue 必须从栏按钮项或 View 中呈现。我很确定这是因为我没有为 popOver segue 设置 anchor 。 Storyboard 中不存在该按钮,因此我无法将其设置在那里。而且我似乎找不到在运行时设置它的 API。

我还尝试在 IB 中创建按钮,但不在 View 层次结构中,然后只将 rightBarButtonItem 属性设置为我现有的按钮。这也有效,但我仍然无法将该按钮设置为弹出 View 的 anchor 。我可以将导航栏设置为 anchor ,但这会使它锚定到导航栏中的标题,这看起来很傻。

有什么想法吗?

最佳答案

我遇到了同样的问题并通过在 Storyboard 中为 View Controller 创建一个 UIBarButtonItem 来解决它,但不是 View 层次结构的一部分。

在 IB 中,将条形按钮项拖到 View Controller View 下方的深色条中,将其放在“First Responder”和“View Controller”图标旁边。为它创建一个(强)IBOutlet。然后通过从条形按钮项拖动到目标来创建从它到目标 View Controller 的弹出窗口 segue。似乎这是将其设置为 anchor 的唯一方法。选择它作为现有 segue 的 anchor 不起作用(看起来像 IB 错误)。

enter image description here

在 viewDidLoad 中,您可以将此条形按钮项分配给 navigationItem(或您喜欢的任何地方),并且 segue 会按预期工作。

关于ios - 在运行时为弹出 View anchor 创建按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7787119/

相关文章:

iphone - iOS 6.0 中的界面方向

ios - 动画 24 张大图像 - 每张 728x936 大小

ios - 如何删除 objective-c 中的 UINavigationController/UINavigationBar 背景?

ios - 像在 iOS 7 日历应用程序中一样设置 UINavigationBar 高度

ios - RightBarButtonItem 未出现在导航栏中

iphone - 如何删除UITableView中最后一个单元格的最后一个边框?

ios - 使用 Google 云端硬盘登录未获得授权

iphone - iOS/Core Data - 从 NSSet 关系返回数组的最佳方式?

ios - Xcode 项目卡住 "Compiling Swift source files"

javascript - 带有触摸打洞的 jQuery 可拖动 - 闪烁问题