我在故事板中深入了几个级别,想要将所有内容都展开到第一个屏幕。幸运的是,有一些 API 正是为了做到这一点而设计的:
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
[topController dismissViewControllerAnimated:NO completion:nil];
但是,这种方法似乎一个接一个地"展开"视图堆栈,导致我当前位置和第一个屏幕之间的每个视图短暂调用viewWillAppear
、viewDidAppear
、viewWillDisappear
和viewDidDisappear
。这会导致我的应用程序中的活动嘈杂,因为大多数中间屏幕在出现时都会做有趣的事情。我可以在 Xcode 中设置断点,并观察这些方法以相反的顺序调用回主屏幕。
我需要一种方法来弹出到故事板的开头,而不会导致路径上的每个屏幕都亮起并正常工作。
如果这意味着我不能再将viewWillAppear
用于此目的,只要存在,我愿意切换到替代方法。
预期行为。我假设您正在呈现视图层,并对每个先前视图进行presentViewController...
调用。
您应该考虑使用UINavigationController
作为顶级视图。然后,当您想一路回去时,您可以打电话给popToRootViewControllerAnimated:
。