private void OnHideUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null) { if (!_showUIDic.ContainsKey(uiInfo.UIID)) { return; } int uiid = uiInfo.UIID; // 委托不为空等待逻辑执行完成后再隐藏UI if (null != onComplete) { onComplete += delegate { _showUIDic.Remove(uiInfo.UIID); if (uiInfo.CoreData.IsDestoryOnClosed && _allUIDic.ContainsKey(uiid)) { _allUIDic.Remove(uiInfo.UIID); } }; _showUIDic[uiid].HideUI(onComplete); } else { _showUIDic[uiid].HideUI(); _showUIDic.Remove(uiInfo.UIID); if (uiInfo.CoreData.IsDestoryOnClosed && _allUIDic.ContainsKey(uiid)) { _allUIDic.Remove(uiInfo.UIID); } } }
public override void HideUI(DelOnCompleteHideUI onComplete = null) { HideAnimation(delegate { base.HideUI(onComplete); Debug.Log("Animation is over!"); }); }
/// <summary> /// 按照UI的核心策略,隐藏或者销毁UI /// </summary> /// <param name="onComplete"></param> public virtual void HideUI(DelOnCompleteHideUI onComplete = null) { if (infoData.CoreData.IsDestoryOnClosed) { if (null != onComplete) { onComplete(); } DestoryUI(); } else { HideDirectly(); if (null != onComplete) { onComplete(); } } }
/// <summary> /// 关闭UI,根据导航策略采取不同关闭行为 /// </summary> /// <param name="uiInfo"></param> /// <param name="onComplete"></param> public static void CloseUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null) { if (null == uiInfo || CoreGlobeVar.INVAILD_UIID == uiInfo.UIID) { return; } switch (uiInfo.CoreData.NavigationMode) { case UINavigationMode.NormalNavigation: UIManager._instance.OnCloseReturnUI(uiInfo); break; case UINavigationMode.IngoreNavigation: UIManager._instance.OnHideUI(uiInfo, onComplete); break; default: break; } }
private void OnCloseReturnUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null) { if (!_showUIDic.ContainsKey(uiInfo.UIID)) { return; } // 没有导航数据使用前置UI的Infodata导回去 if (0 == _backSequenceStack.Count) { if (null == _curNavUIBase) { return; } UIInfoData preUIInfo = _curNavUIBase.PreUIInfo; if (null != preUIInfo) { if (null == onComplete) { onComplete = delegate { OnShowUI(preUIInfo); }; } else { onComplete += delegate { OnShowUI(preUIInfo); }; } OnHideUI(uiInfo, onComplete); } return; } // 有导航数据 NavigationData uiReturnInfo = _backSequenceStack.Peek(); if (null != uiReturnInfo) { int willShowUIID = uiReturnInfo.HideTargetUI.infoData.UIID; if (uiInfo.UIID != willShowUIID) { return; } if (!_showUIDic.ContainsKey(willShowUIID)) { return; } DelOnCompleteHideUI tmpDel = delegate { int siblingIndex = 0; foreach (int backId in uiReturnInfo.BackShowTargetsList) { if (_showUIDic.ContainsKey(backId)) { continue; } if (!_allUIDic.ContainsKey(backId)) { if (null == NavBackUIReload(backId, siblingIndex + 1)) { continue; } } _allUIDic[backId].ReShowUI(); _showUIDic[backId] = _allUIDic[backId]; siblingIndex = _showUIDic[backId].Trans.GetSiblingIndex(); } _allUIDic.TryGetValue(uiReturnInfo.BackShowTargetsList[uiReturnInfo.BackShowTargetsList.Count - 1], out _curNavUIBase); _backSequenceStack.Pop(); }; if (null == onComplete) { onComplete = tmpDel; } else { onComplete += tmpDel; } OnHideUI(uiInfo, onComplete); } ReShowHiddenAllCache(); }
/// <summary> /// 经过反向导航栈然后关闭隐藏UI /// </summary> /// <param name="uiInfo"></param> public static void CloseReturnUI(UIInfoData uiInfo, DelOnCompleteHideUI onComplete = null) { UIManager._instance.OnCloseReturnUI(uiInfo, onComplete); }