public UIDisplayInfo popDisplayInfo() { if (_historyUIDisplayInfoStack.Count > 0) { UIDisplayInfo displayInfo = _historyUIDisplayInfoStack[_historyUIDisplayInfoStack.Count - 1]; _historyUIDisplayInfoStack.RemoveAt(_historyUIDisplayInfoStack.Count - 1); return(displayInfo); } else { return(null); } }
/// <summary> /// 显示一个新的UI,如果现在有正在显示的UI,那么会保存它的返回信息。 /// </summary> /// <param name="uiCtrl"></param> /// <param name="displayInfo"></param> /// <returns></returns> public Task displayUIWithReturn(IUICtrl uiCtrl, UIDisplayInfo displayInfo) { //如果当前有已经在显示的UI if (_currentDisplayUICtrl != null) { //就获取它的显示信息,并放进历史ui显示信息栈里面 UIDisplayInfo prevUIDisplayInfo = _currentDisplayUICtrl.getCurrentDisplayInfo(); prevUIDisplayInfo.uiCtrl = _currentDisplayUICtrl; _historyUIDisplayInfoStack.Add(prevUIDisplayInfo); } _currentDisplayUICtrl = uiCtrl; return(uiCtrl.display(displayInfo)); }
/// <summary> /// 返回之前显示的UI。 /// </summary> /// <param name="onNothingToReturn"></param> /// <returns></returns> public async Task returnPrevUI(Action onNothingToReturn = null) { //隐藏当前显示UI if (_currentDisplayUICtrl != null) { await _currentDisplayUICtrl.hide(); _currentDisplayUICtrl = null; } UIDisplayInfo displayInfo = popDisplayInfo(); if (displayInfo != null) { //返回上层 _currentDisplayUICtrl = displayInfo.uiCtrl; await displayInfo.uiCtrl.display(displayInfo); } else { //没有可以返回的UI了 onNothingToReturn?.Invoke(); } }
public void pushDisplayInfo(UIDisplayInfo displayInfo) { _historyUIDisplayInfoStack.Add(displayInfo); }