Exemple #1
0
        /// <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();
            }
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
 /// <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);
 }