Example #1
0
    /// <summary>
    /// 隐藏面板
    /// </summary>
    /// <param name="id">面板id</param>
    /// <param name="ignoreCacheBack">是否忽略cacheBack</param>
    /// <param name="action"></param>
    /// <param name="needDestroy"></param>
    /// <param name="?"></param>
    public void HidePanel(PanelID id, bool needReturnBack, Action action = null)
    {
        if (!IsShowPanel(id))
        {
            return;
        }

        UIPanelBase panel        = GetPanel(id);
        int         pid          = (int)id;
        Action      hideCallback = () =>
        {
            LocalPanelInfo lp = null;
            if (TryGetLocalPanelInfo(id, out lp) && lp.PanelTaData.Enable)
            {
                UIFrameManager.Instance.ResetTabs();
            }
            if (needReturnBack)
            {
                if (panel.PanelInfo.CacheLv != PanelCacheLv.None)
                {
                    OnPanelCacheBack(id);
                }
                //如果有前置面板,显示前置面板
                if (null != panel.PrePanelData && panel.PrePanelData.PID != PanelID.None)
                {
                    ShowPanel(panel.PrePanelData.PID
                              , prePanelData: panel.PrePanelData.PrePanelData
                              , data: panel.PrePanelData.Data, jumpData: panel.PrePanelData.JumpData);
                }
            }
            //主界面影藏,根节点也隐藏
            //if (id == PanelID.MainPanel)
            //{
            //    UIRootHelper.Instance.SetPanelRootStatusByType(PanelRootType.Main,false);
            //}
        };

        if (null != action)
        {
            hideCallback += action;
        }

        panel.HidePanel(hideCallback);
    }