警告:尝试显示不在窗口层次结构中的视图!使用已识别的 segue 时
Posted
技术标签:
【中文标题】警告:尝试显示不在窗口层次结构中的视图!使用已识别的 segue 时【英文标题】:Warning: Attempt to present whose view is not in the window hierarchy! When using identified segue 【发布时间】:2013-11-28 09:39:29 【问题描述】:我知道还有很多其他问题与此相关,但它们并没有完全解释我的问题。
我从最初的视图控制器 SAGViewController
转到另一个 SAGHomeScreenViewController
当按下相关按钮时,通过已识别的故事板自定义 segue:
-(IBAction)goNewGame
[self performSegueWithIdentifier:@"startHomeSegue" sender:self];
它工作正常,但我仍然收到警告:
警告:尝试在 SAGViewController: 0xbaaa9f0 上呈现 SAGHomeScreenViewController: 0xc43b800,其视图不在窗口层次结构中!
如果我注释掉 performSegueWithIndentifer
,segue 仍然有效,但我没有收到警告:
-(IBAction)goNewGame
//[self performSegueWithIdentifier:@"startHomeSegue" sender:self];
为什么?请注意,我没有导航控制器。 如有任何建议,我们将不胜感激,segue 仍然有效,但我不想要任何我不理解的警告!
【问题讨论】:
如果你不使用 UINavigationController 那么你应该使用模态segue。 Segue 之所以有效,是因为如果我没记错的话,您在情节提要中将 segue 从您的 uibutton 对象连接到 nextviewcontroller。 我正在使用自定义 segue,因为我希望目标视图从右侧滑入。如果我切换到模态序列,我仍然会收到警告 如何将当前的 viewControllert(调用 goNewGame 的控制器)添加到视图层次结构中? 我没有,这是我的初始视图控制器 - 在情节提要中,我已将其标记为是初始视图控制器。我还应该做其他事情吗?如果我使用 performSegueWithIdentifier,我只会收到警告。 从哪里调用 goNewGame 方法?是否在取消按钮点击时被调用? 【参考方案1】:您应该删除该方法,并且应该在情节提要中建立从按钮到第二个 viewController 的连接。
//扩展
如果你想向目标视图传递一些东西,你可以使用 prepareForSegue:sender 方法。 每次通过 segue 更改视图时都会调用此方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"YOURSEGUEIDENTIFIER"])
YourViewController *yourVC = [segue destinationViewController];
//扩展
发生这种情况是因为您以两种方式连接您的 segue,一种在代码中,另一种在情节提要中。您必须删除其中之一。您可以从您的代码中删除您的 IBAction(这样您将在情节提要中只有连接),或者您可以在情节提要中删除您的连接(从您的按钮到目标视图控制器)并再次添加它,但这次将其从源视图控制器中拖动(不是按钮)到您的目标视图控制器。不要忘记设置 segue 标识符。如果您使用情节提要,我建议您从代码中删除您的 IBAction,从而减少要管理的代码。 希望对您有所帮助。
【讨论】:
感谢您的宝贵时间。如果我需要使用 performSegueWithIdentifier 方法怎么办?将某些东西传递给目标视图?我知道还有其他方法可以传递信息,但为什么 performSegueWithIdentifier 会导致警告? 无论如何我都有 prepareForSegue,如果我使用 performSegueWIthIdentifier 仍然会收到警告以上是关于警告:尝试显示不在窗口层次结构中的视图!使用已识别的 segue 时的主要内容,如果未能解决你的问题,请参考以下文章
警告:尝试在视图不在窗口层次结构中的 <App name:> 上显示 <UIAlertController:>
警告:尝试在其视图不在窗口层次结构中的 * 上呈现 * - swift
警告:尝试呈现不在窗口层次结构中的视图!在 UISearchController
警告:尝试在视图不在窗口层次结构中的 **.ViewController 上呈现 ZMNavigationController