gpt4 book ai didi

objective-c - 从弹出窗口呈现 View

转载 作者:太空狗 更新时间:2023-10-30 04:00:56 27 4
gpt4 key购买 nike

在我的应用程序中,用户可以按一个 tableviewcell,它显示一个弹出窗口,在它的标题中有一个按钮。按下此按钮将显示一个导航 View Controller 。

DNWInfoViewController *infoViewController = [[DNWInfoViewController alloc] initWithInfoText:infoText];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:infoViewController];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navController animated:YES completion:nil];

但自 iOS 8 以来,我收到此警告并且 View 未显示:

Warning: Attempt to present <UINavigationController: 0x180e1dc0>  on <ANProjectFilterViewController: 0x16ec5cf0> which is already presenting (null)

这一定是因为 popovercontroller 仍在显示,所以我在呈现 View 之前尝试了这个

[_ppvrController dismissPopoverAnimated:YES]; // This will not call the delegate

此“修复”有时会奏效。但大多数时候它仍然显示警告而不是我的观点。我尝试手动调用委托(delegate),但结果相同。

这曾经在 iOS 7 及更低版本中运行良好。如何在 iOS 8 中通过弹出窗口显示新 View ?

编辑 1

显示我找到了

dismissPopoverAnimated

由于某种原因在 iOS 8 中不起作用。通常,当用户从弹出窗口中选择一个项目时,会调用一个方法,该方法首先关闭弹出窗口,然后执行一些自定义操作。在 iOS 7 中,弹出窗口会在选择时消失,但在 iOS 8 中不会。

编辑 2

那么真正触发警告的是这段代码:

[_ppvrController dismissPopoverAnimated:YES];

这段代码在一个方法中。该方法是从呈现的弹出框内的按钮调用的。弹出窗口有一半的时间被成功关闭,但有时它只是打印警告,弹出窗口保持可见。

注意:此方法中没有其他代码。只需一行即可关闭弹出窗口。

最佳答案

这似乎是 iOS 8 上的一个错误。我建议你 report it给苹果。与此同时,我了解到其他人正在使用此解决方法:

[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self presentViewController:yourNewNavigationController animated:YES completion:nil];
}];

关于objective-c - 从弹出窗口呈现 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26097160/

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