tvOS - 关闭到故事板顶部会导致所有中间屏幕 -viewWillAppear/Disappear
tvOS - dismissing to top of storyboard causes all intermediate screens to -viewWillAppear/Disappear
我在情节提要中深入了几个层次,想要将所有内容一直展开回到第一个屏幕。幸运的是,有专门设计用于执行此操作的 API:
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
[topController dismissViewControllerAnimated:NO completion:nil];
然而,这种方法似乎"unroll" 视图一个接一个地堆叠,导致我当前位置和第一个屏幕之间的每个视图都短暂调用 viewWillAppear
、viewDidAppear
、viewWillDisappear
,以及 viewDidDisappear
。这会在我的应用程序中引起 activity 的杂音,因为大多数中间屏幕在出现时都会做一些有趣的事情。我可以在 Xcode 中设置断点并观察这些方法以相反的顺序调用回到主屏幕。
我需要一种方法来回到情节提要的开头,而不会使沿途的每个屏幕都亮起并开始工作。
如果这意味着我不能再将 viewWillAppear
用于此目的,我愿意切换到现有的替代方法。
这是预期的行为。我假设您要通过对每个先前视图的 presentViewController...
调用来呈现视图层。
您应该考虑使用 UINavigationController
作为顶级视图。然后你可以在你想一直返回的时候调用popToRootViewControllerAnimated:
。
我在情节提要中深入了几个层次,想要将所有内容一直展开回到第一个屏幕。幸运的是,有专门设计用于执行此操作的 API:
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
[topController dismissViewControllerAnimated:NO completion:nil];
然而,这种方法似乎"unroll" 视图一个接一个地堆叠,导致我当前位置和第一个屏幕之间的每个视图都短暂调用 viewWillAppear
、viewDidAppear
、viewWillDisappear
,以及 viewDidDisappear
。这会在我的应用程序中引起 activity 的杂音,因为大多数中间屏幕在出现时都会做一些有趣的事情。我可以在 Xcode 中设置断点并观察这些方法以相反的顺序调用回到主屏幕。
我需要一种方法来回到情节提要的开头,而不会使沿途的每个屏幕都亮起并开始工作。
如果这意味着我不能再将 viewWillAppear
用于此目的,我愿意切换到现有的替代方法。
这是预期的行为。我假设您要通过对每个先前视图的 presentViewController...
调用来呈现视图层。
您应该考虑使用 UINavigationController
作为顶级视图。然后你可以在你想一直返回的时候调用popToRootViewControllerAnimated:
。