关闭之前的 Viewcontroller
Dismiss a previous Viewcontroller
我目前正在开发一款具有多个 viewcontroller 的游戏。
VC1(intro) -> VC2(game selection) ->VC3,VC4,VC5(games) -> VC6(display marks)
所有箭头都是模态segue
我使用 unwind segue 从 VC6 返回到 VC2 并想重播。然而,当select一款游戏转到VC3时,VC3并没有想象中的全新。它显示为完成的游戏条件。
如果我真的想在显示标记后重播它,我该如何使用 segue 和 Viewcontroller 来实现?
此外,我怎样才能完全删除之前viewcontroller的实例?
您可以像这样操作导航控制器的视图控制器数组
NSMutableArray *navigarray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[navigarray removeLastObject]; //navigarray contains all vcs
[[self navigationController] setViewControllers:navigarray animated:YES];
你可以回到parentViewController
链上:
UIViewController *viewController = nil;
do {
viewController = self.parentViewController;
} while (![self isViewControllerImLookingFor:viewController]);
或者您可以实现自定义导航堆栈管理器,并存储导航控制器数组,类似于 UINavigationController
的做法。
我目前正在开发一款具有多个 viewcontroller 的游戏。 VC1(intro) -> VC2(game selection) ->VC3,VC4,VC5(games) -> VC6(display marks)
所有箭头都是模态segue
我使用 unwind segue 从 VC6 返回到 VC2 并想重播。然而,当select一款游戏转到VC3时,VC3并没有想象中的全新。它显示为完成的游戏条件。
如果我真的想在显示标记后重播它,我该如何使用 segue 和 Viewcontroller 来实现?
此外,我怎样才能完全删除之前viewcontroller的实例?
您可以像这样操作导航控制器的视图控制器数组
NSMutableArray *navigarray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
[navigarray removeLastObject]; //navigarray contains all vcs
[[self navigationController] setViewControllers:navigarray animated:YES];
你可以回到parentViewController
链上:
UIViewController *viewController = nil;
do {
viewController = self.parentViewController;
} while (![self isViewControllerImLookingFor:viewController]);
或者您可以实现自定义导航堆栈管理器,并存储导航控制器数组,类似于 UINavigationController
的做法。