zhaoyang 2 سال پیش
والد
کامیت
f9b34e332f
1فایلهای تغییر یافته به همراه17 افزوده شده و 10 حذف شده
  1. 17 10
      GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

+ 17 - 10
GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

@@ -22,7 +22,7 @@ namespace GFGGame
         private static GComponent _debugLayer;
         private static GComponent _floatLayer;
 
-        private static Dictionary<string, object[]> _goBackDatas = new Dictionary<string, object[]>();
+        private static Dictionary<string, List<object[]>> _goBackDatas = new Dictionary<string, List<object[]>>();
 
         public static void Init()
         {
@@ -147,10 +147,13 @@ namespace GFGGame
                 }
                 if (goBackParams != null)
                 {
-                    _goBackDatas[name] = goBackParams;
+                    if (!_goBackDatas.ContainsKey(name))
+                    {
+                        _goBackDatas.Add(name, new List<object[]>());
+                    }
+                    _goBackDatas[name].Add(goBackParams);
                 }
                 Debug.Log("当前打开:" + name);
-
             }
             return true;
 
@@ -211,7 +214,7 @@ namespace GFGGame
                 }
                 if (goBackParams != null)
                 {
-                    _goBackDatas[name] = goBackParams;
+                    _goBackDatas[name].Add(goBackParams);
                 }
                 else if (resetGobackParams)
                 {
@@ -255,13 +258,14 @@ namespace GFGGame
             }
         }
 
-        public static void GoBackFrom(string viewName, bool clearGoBackDatas = false)
+        public static void GoBackFrom(string viewName)
         {
             string name = GetName(viewName);
             ViewManager.Hide(name);
-            if (_goBackDatas.ContainsKey(name))
+            if (_goBackDatas.ContainsKey(name) && _goBackDatas[name].Count > 0)
             {
-                object[] gobackItems = _goBackDatas[name];
+                List<object[]> goBackdatas = _goBackDatas[name];
+                object[] gobackItems = goBackdatas[goBackdatas.Count - 1];
                 string tViewName = gobackItems[0] as string;
 
                 object tViewData = null;
@@ -269,8 +273,8 @@ namespace GFGGame
                 {
                     tViewData = gobackItems[1];
                 }
-
                 ViewManager.Show(tViewName, tViewData);
+                _goBackDatas[name].RemoveAt(goBackdatas.Count - 1);
             }
             else
             {
@@ -281,8 +285,11 @@ namespace GFGGame
         public static object[] GetGoBackDatas(string viewName)
         {
             string name = GetName(viewName);
-            object[] value;
-            _goBackDatas.TryGetValue(name, out value);
+            object[] value = null;
+            if (_goBackDatas.ContainsKey(name) && _goBackDatas[name].Count > 0)
+            {
+                value = _goBackDatas[name][_goBackDatas[name].Count - 1];
+            }
             return value;
         }
         public static UIView GetUIView(string viewName)