public void GoToPage(string pageName)
 {
     if (pages.ContainsKey(pageName))
     {
         if (activePage != null)
         {
             activePage.OnHide();
         }
         prevPage   = activePage;
         activePage = pages[pageName];
         activePage.OnShow();
     }
 }
Exemple #2
0
 static int OnHide(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         UIPage obj = (UIPage)ToLua.CheckObject(L, 1, typeof(UIPage));
         obj.OnHide();
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
Exemple #3
0
    public void ShowPage(UIPage page)
    {
        if (activePage != null)
        {
            activePage.OnHide();
        }

        activePage = page;

        if (activePage != null)
        {
            activePage.OnShow();
        }
    }
Exemple #4
0
    /// <summary>
    /// 检测并弹出不合格的数据
    /// </summary>
    /// <param name="page"></param>
    private void checkPops(UIPage page)
    {
        if (page.AttributePage.showMode != EShowMode.HideOther)
        {
            return;
        }

        //如果返回列表不为空,说明界面被反复显示调用,则添加一个分隔标识
        // 标识也可是使用Page的各页面配置,用于区分,因为异步情况下界面对象被释放无法使用
        int count = page.BackQueue.Count;

        if (count > 0)
        {
            page.BackQueue.Add("_none_");
        }

        for (int i = pageList.Count - 2; i >= 0; i--)
        {
            UIPage uiPage = pageList[i];

            if (uiPage.AttributePage.pageType == EPageType.Fixed || !uiPage.Active)
            {
                continue;
            }

            uiPage.OnHide();
            pageList.RemoveAt(i);

            //记录上次显示的界面列表,用于返回操作
            //如果页面不需要返回时显示,则不用添加到返回列表
            if (uiPage.AttributePage.showMode != EShowMode.NoNeedBack)
            {
                page.BackQueue.Add(uiPage.AttributePage.assetPath);
            }
        }

        //如果没有新的返回列表,则不需要分隔标识
        if (count > 0 && count == page.BackQueue.Count - 1)
        {
            page.BackQueue.RemoveAt(count);
        }
    }
Exemple #5
0
    /// <summary>
    /// 隐藏指定页面
    /// </summary>
    /// <param name="pageName">页面名</param>
    public void Hide(string pageName)
    {
        UIPage page = GetPageUI(pageName);

        if (page == null)
        {
            return;
        }

        for (int i = 0; i < pageList.Count; i++)
        {
            if (pageList[i] != page)
            {
                continue;
            }

            for (int j = pageList.Count - 1; j > i; j--)
            {
                UIPage tPage = pageList[j];
                tPage.OnHide();
                pageList.RemoveAt(j);

                //记录上次显示的界面列表,用于返回操作
                //如果页面不需要返回时显示,则不用添加到返回列表
                if (tPage.AttributePage.showMode != EShowMode.NoNeedBack &&
                    tPage.AttributePage.showMode != EShowMode.HideOther)
                {
                    page.BackQueue.Add(tPage.AttributePage.assetPath);
                }
            }

            pageList.RemoveAt(i);
            break;
        }

        page.OnHide();
    }