private VRUIViewController PopViewControllerStack(ViewControllerPosition pos) { VRUIViewController viewController = _viewControllerStacks[pos].Last(); _viewControllerStacks[pos].Remove(viewController); return(viewController); }
private void SetScreen(FlowCoordinator _activeFlowCoordinator, CustomViewController newViewController, VRUIViewController origViewController, ViewControllerPosition pos, bool immediately) { Action <bool> backAction = (immediate) => SetViewController(_activeFlowCoordinator, PopViewControllerStack(pos), pos, immediate); _dismissCustom += backAction; // custom back button behavior if (!newViewController.isActivated) { if (!_viewControllerStacks.ContainsKey(pos)) { _viewControllerStacks[pos] = new List <VRUIViewController>(); } _viewControllerStacks[pos].Add(origViewController); if (newViewController.includeBackButton) { newViewController.ClearBackButtonCallbacks(); newViewController.backButtonPressed += () => { backAction.Invoke(false); }; // default back button behavior } SetViewController(_activeFlowCoordinator, newViewController, pos, immediately); } }
private void SetViewController(FlowCoordinator flowCoordinator, VRUIViewController viewController, ViewControllerPosition pos, bool immediate) { string method = string.Empty; switch (pos) { case ViewControllerPosition.Left: method = "SetLeftScreenViewController"; break; case ViewControllerPosition.Right: method = "SetRightScreenViewController"; break; case ViewControllerPosition.Bottom: method = "SetBottomScreenViewController"; break; default: return; } flowCoordinator.InvokePrivateMethod(method, new object[] { viewController, immediate }); }