/// <summary> /// 进入视图 /// </summary> /// <param name="viewId">视图id</param> /// <param name="options">选项</param> /// <param name="callback">进入完成回调</param> public void Enter(int viewId, EnterOptions options = EnterOptions.None, Action callback = null) { ProcessEnterOptions(IntGroup.Get(viewId), options); ViewState state; _viewDic.TryGetValue(viewId, out state); if (!state.active) { state.active = true; _viewDic[viewId] = state; OnViewEnterStartEvent?.Invoke(viewId); _uiModule?.Enter(viewId, () => { callback?.Invoke(); _uiModule?.Focus(viewId); OnViewEnterCompletedEvent?.Invoke(viewId); }); } else { _uiModule?.Focus(viewId); callback?.Invoke(); } }
/// <summary> /// 退出视图 /// </summary> /// <param name="viewId">视图id</param> /// <param name="options">选项</param> /// <param name="callback">退出完成回调</param> public void Quit(int viewId, QuitOptions options = QuitOptions.None, Action callback = null) { ViewState state; if (_viewDic.TryGetValue(viewId, out state)) { if (state.active) { state.active = false; _viewDic[viewId] = state; OnViewQuitStartEvent?.Invoke(viewId); _uiModule?.Quit(viewId, () => { callback?.Invoke(); _uiModule?.UnFocus(viewId); OnViewQuitCompletedEvent?.Invoke(viewId); }, options.HasFlag(QuitOptions.Destroy)); } else { callback?.Invoke(); } } else { callback?.Invoke(); } ProcessQuitOptions(IntGroup.Get(viewId), options); }
/// <summary> /// 退出所有视图 /// 会有部分视图驻留 /// </summary> /// <param name="stayViewId">驻留视图</param> /// <param name="options">退出的视图选项</param> /// <param name="stayOptions">驻留的视图选项</param> public void QuitAll(int stayViewId, QuitOptions options = QuitOptions.None, StayOptions stayOptions = StayOptions.None) { QuitAll(IntGroup.Get(stayViewId), options, stayOptions); }