public void GoToPage(string pageName) { if (pages.ContainsKey(pageName)) { if (activePage != null) { activePage.OnHide(); } prevPage = activePage; activePage = pages[pageName]; activePage.OnShow(); } }
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)); } }
public void ShowPage(UIPage page) { if (activePage != null) { activePage.OnHide(); } activePage = page; if (activePage != null) { activePage.OnShow(); } }
/// <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); } }
/// <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(); }