//模态窗口 public void Open(Type type, object args = null) { bool isNeedCreate = true; bool isNeedAdd = true; ViewInfo viewInfo = null; if (m_viewsMap.TryGetValue(type, out viewInfo)) { FView view = viewInfo.view; if (IsOpened(type)) { //XXX:置顶到顶层:判断是否被遮挡,通过移除在添加的方式 if (GRoot.inst.numChildren > 0) { if (GRoot.inst.GetChildAt(GRoot.inst.numChildren - 1) != view.GetObject()) { Close(__GetViewKey(view), false); } else { isNeedAdd = false; isNeedCreate = false; } } } if (isNeedAdd) { if (!view.IsDisposed()) { view.__OpenByManager(args); isNeedCreate = false; } } } if (isNeedCreate) { //加载View FView.Create(type, (fWidget) => { FView fView = (FView)fWidget; viewInfo = new ViewInfo(); viewInfo.view = fView; m_viewsMap[type] = viewInfo; m_onCreated?.Invoke(viewInfo); fView.__OpenByManager(args); }, args); } }
public bool IsOpened(Type type) { ViewInfo viewInfo = null; if (m_viewsMap.TryGetValue(type, out viewInfo)) { FView view = viewInfo.view; if (!view.IsDisposed()) { return(view.IsVisible()); } } return(false); }