gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 08:06:13 25 4
gpt4 key购买 nike

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

我有一个应用程序要从 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com