永发信息网

【C#】每次调用Back的时候都会退到root界面,想问如何改进

答案:1  悬赏:30  手机版
解决时间 2021-03-25 19:18
【C#】每次调用Back的时候都会退到root界面,想问如何改进
最佳答案
最后一句

UIChildArray.ForEach(item => item.Back()); //把每个子UI都关闭
改成
UIChildArray[0].Back(); //只关闭一个子UI追问back不执行关闭 作为递归使用,让子状态判断自己是不是要把自己关掉 close方法执行关闭,方法内容是,如果自身是根UI则不关闭,否则关闭自身追答关闭“目标”的话,直接调用目标的back即可。是不是调用了root的Back了?追问调用root 的back back的内容是判断自己是否需要被关闭,否则遍历子集,让每一子对象都执行back 负责关闭的是close 当需要关闭自身的时候执行close方法,如果不需要关闭自身就遍历子集,让每一子对象都执行back 形成递归追答不是看不懂你的代码,而是想和你确认一下,原始的设计思路是什么样的。新代码尽量按照原来的思路去做。如果你需要变更功能,必须确保原有思路中所有的地方(比如:子集何时被修改)都不会受影响。

你自己也说了,它是遍历子集,让每个子对象都执行Back的。
可是代码里,一个没有子对象的对象,执行Back的动作,就是做Close。换句话说,对某个UI执行了Back,就是让它自己以及它的子UI都关闭。(我认为这里有个BUG,后述)

代码执行了以后的效果:父对象做Back时会遍历子对象,子对象 没有孙子对象时,会导致子对象都被Close。但是当有孙子对象时,并不关闭儿子节点,而去遍历孙子对象的Back。

按照通常的做法,如果有下级节点,那么遍历下级节点进行关闭。然后用递归方法遍历所有节点。但是你这里和通常做法,稍有不同。通常情况下,遍历完子节点后(即子节点都被关闭后),需要把当前节点也关闭掉。你的原始代码里,没有关闭自己的动作。
所以我不确定,你关闭一个UI时,是调用UI自己的Back,还是调用root的Back。
上面讨论的都是你的原始代码。
关于你的修改,其实很简单。想要把“关闭所有UI”改成“关闭一个UI”,只要做到两点:
把遍历关闭,改成只关闭一个

找到被关闭的UI对象

追问可是我想设计成只有rootUI调用Back方法,但是可以关掉最末端(树形结构树枝)正在运行中的UI追答那你需要做到:
记录下最末端节点,以及各UI的开启顺序(可以利用你现有的List)。

遍历所有节点,查找最末端节点并关闭(一旦找到,就不再继续遍历)。
你的代码里,List好像能做到第一点(没看到插入List的源代码,不太确定)。ForEach能做到遍历。但是确少“查找最末端节点并关闭”的处理,以及“一旦找到,就不再继续遍历”的处理。

追问理解你的意思,但是我在back里面就想实现“判断自身是不是正在运行中的末端节点”,已经符合“无子节点”“子节点无运行”的条件了,已经没必要关闭自身了但是我大致感觉得到有BUG存在,在我之前写的UI系统里面没有这情况,这一次写是希望简化结构构造的过程,
原先是new每一个UIObject 然后用方法建立父子联系
现在是在构造的时候传入子对象List,然后递归遍历,让为每个子对象的父对象参数赋值this追答你想做的事情是,让Back的功能是“查找末端节点,但是不关闭它”,是这个意思吗?如果是,那要Back干嘛,新写一个SearchLastNode()函数得了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
被保险机动车全车被盗窃、被抢劫、被抢夺、下
简短名人名言(至少50个)好词!
我买的HD6750,gpu-z检测的是HD6750,为什么别
我的电脑是联想Y400I5的CPU我想换成I7四核的C
2009深圳中考我的标准分是多少?
现在的年轻上班族都穿哪些品牌的衣服?
丝杠都有哪些标准?
吾与你结发,愿与汝共度此生
温心川菜馆在什么地方啊,我要过去处理事情
高数(大一的经济管理类)怎么学,
曹操为何跪拜关羽头颅
魔灵召唤光犬单点流和刷图爬塔的利器
怎么样才能让一个极端男跟你分手
电摩轮胎气压应该是高还是低
唯除一事,于咒生疑者,乃至小罪轻业亦不得灭,
推荐资讯
驼色裤子配什么颜色外套好看
刘刚总结了哥伦布创造的四个第一,你认为下列
是加5w30还是5w40南方的车
美曰其名,美其名曰.到底哪个词是对的阿.??
织金县八步镇碧云中学地址在什么地方,想过去
五羊本田,新出的悍影和新锋翼那辆更省油实用
工作又没了,我想弄个麻辣涮或者烤肉串的小摊
珠海到雷州客路大巴
阅读理解CanstormsinAfricacauseasthma(哮
男朋友以前一天和我发好几次信息 现在只有晚
幕墙施工楼高度多少米是高危大工程
谁能给我一个英泰MDS2002或者7.0的能破解的版
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?