Вы можете прослушать событие ADDED_TO_STAGE
в представлении внука и выяснить, входите ли вы в состав представления. Если да, то просто слушайте события show / hide дочернего стека представлений.
... addedToStage="setMeUpForViewStack()" ...
Что такое:
private var vsView:UIComponent = null;
private function setMeUpForViewStack():void
{
if (vsView) {
vsView.removeEventListener("show", vsViewShowHideHandler);
vsView.removeEventListener("hide", vsViewShowHideHandler);
vsView = null;
}
var obj:DisplayObject = this;
while (obj.parent != obj) {
if (obj.parent is ViewStack) {
vsView = obj;
break;
}
obj = obj.parent;
}
if (vsView) {
vsView.addEventListener("show", vsViewShowHideHandler, false, 0, true);
vsView.addEventListener("hide", vsViewShowHideHandler, false, 0, true);
}
}
А в вашем vsViewShowHideHandler
вы бы перезагрузили контент (если видимость видна).
В основном это освобождает вас от беспокойства об уровне вложенности. Однако он не работает с несколькими вложенными стеками представлений.
В обработчике событий REMOVED_FROM_STAGE
вы забудете vsView
.