Exemple #1
0
    private void HideView(UIData view)
    {
        if (view == null)
        {
            return;
        }
        UIViewBase baseView = view.gameObject.GetComponent <UIViewBase>();

        view.gameObject.SetActive(false);
        if (baseView != null)
        {
            baseView.OnClose();
        }
    }
Exemple #2
0
    /// <summary>
    /// 关闭View
    /// </summary>
    /// <param name="name"></param>
    public void CloseView(string name, bool wakeUp = true)
    {
        if (m_UIDataMap.ContainsKey(name))
        {
            UIData m_UIData = m_UIDataMap[name];
            m_UIData.gameObject.SetActive(false);
            UIViewBase baseView = m_UIDataMap[name].gameObject.GetComponent <UIViewBase>();
            if (baseView != null)
            {
                baseView.OnClose();
            }
            switch (m_UIData.viewStyle)
            {
            case UIViewStyle.Page:
            case UIViewStyle.Window:
                m_StackPage.Remove(m_UIData);
                if (m_StackPage.Count > 0)
                {
                    if (wakeUp)
                    {
                        ActiveView(m_StackPage[m_StackPage.Count - 1], m_UIData.viewStyle == UIViewStyle.Page);
                    }
                    m_topPage     = m_StackPage[m_StackPage.Count - 1].name;
                    m_topViewData = m_StackPage[m_StackPage.Count - 1];
                }
                else
                {
                    m_topPage     = null;
                    m_topViewData = null;
                }
                break;

            case UIViewStyle.OverView:
                m_StackOverView.Remove(m_UIData);
                if (m_StackOverView.Count > 0)
                {
                    m_topOverView = m_StackOverView[m_StackOverView.Count - 1].name;
                }
                else
                {
                    m_topOverView = null;
                }
                break;
            }
            m_UIData.hidenOverView.Clear();
        }
    }
Exemple #3
0
 public void ReplaceView(string name, Intent intent = null)
 {
     if (m_topPage != name && m_UIDataMap.ContainsKey(m_topPage))
     {
         UIData m_UIData = m_UIDataMap[m_topPage];
         m_UIData.gameObject.SetActive(false);
         UIViewBase baseView = m_UIData.gameObject.GetComponent <UIViewBase>();
         if (baseView == null)
         {
             Debugger.Error(name + " need UIViewBase!");
             return;
         }
         baseView.OnClose();
         foreach (var item in m_UIData.hidenOverView)
         {
             ActiveView(item);
         }
         OpenView(name, intent);
     }
 }
Exemple #4
0
 public void PageBack(string toPage = "", bool wakeUp = true)
 {
     if (toPage == "")
     {
         if (TopView.viewStyle == UIViewStyle.Window)
         {
             TopView.gameObject.SetActive(false);
             UIViewBase baseView = TopView.gameObject.GetComponent <UIViewBase>();
             if (baseView != null)
             {
                 baseView.OnClose();
             }
             m_StackPage.Remove(TopView);
             App.Manager.ObjectPool.Release(TopView.name, TopView.gameObject);
             if (m_StackPage.Count > 0)
             {
                 if (wakeUp)
                 {
                     ActiveView(m_StackPage[m_StackPage.Count - 1], false);
                 }
                 m_topPage     = m_StackPage[m_StackPage.Count - 1].name;
                 m_topViewData = m_StackPage[m_StackPage.Count - 1];
             }
             else
             {
                 m_topPage     = null;
                 m_topViewData = null;
             }
         }
         else
         {
             UIData m_UIData = m_UIDataMap[m_topPage];
             CloseView(m_topPage, wakeUp);
             //恢复之前隐藏状态
             m_UIData = m_UIDataMap[m_topPage];
             if (wakeUp)
             {
                 for (int i = m_StackOverView.Count - 1; i >= 0; i--)
                 {
                     if (m_UIData.hidenOverView.IndexOf(m_StackOverView[i]) == -1)
                     {
                         Debugger.Log("active:" + m_StackOverView[i].name);
                         ActiveView(m_StackOverView[i]);
                     }
                     else if (m_StackOverView[i].gameObject.activeSelf)
                     {
                         Debugger.Log("hide:" + m_StackOverView[i].name);
                         HideView(m_StackOverView[i]);
                     }
                 }
             }
         }
     }
     else
     {
         for (int i = m_StackPage.Count - 1; i >= 0; i--)
         {
             if (m_StackPage[i].name == toPage)
             {
                 for (int j = 2; j < m_StackPage.Count - i; j++)
                 {
                     PageBack("", false);
                 }
                 PageBack();
                 break;
             }
         }
     }
 }