我有一个标签式应用程序(iOS - 使用Alloy框架),其中一个标签用于显示产品。在此选项卡中,我使用SplitWindow进行主/细节设置。
在Master中,我有一个使用表视图的简单类别浏览器。这是我的观点xml:
<Alloy>
<Tab title="Products" icon="Nav_Products.png" id="tabProducts" backgroundColor="white">
<SplitWindow backgroundColor="white" showMasterInPortrait="true">
<!-- Categories -->
<NavigationWindow id="categoriesWindow">
<Window title="Categories">
<TableView id="categories" separatorStyle="Titanium.UI.iPhone.TableViewSeparatorStyle.SINGLE_LINE" />
</Window>
</NavigationWindow>
<!-- Products -->
<NavigationWindow>
<Window id="resultsWindow" title="Select a category to browse it's products" backgroundColor="white">
<RightNavButton>
<Button right="0" id="basketSubTotal" />
</RightNavButton>
<View left="10" top="10" right="10" bottom="10">
<TableView rowHeight="160" id="tblResults" allowsSelection="false" />
</View>
</Window>
</NavigationWindow>
</SplitWindow>
</Tab>
</Alloy>
当应用加载时,它会呈现如下的根类别:
如果我点击类别“头发”,它会在“头发”中加载子类别,而标题为“类别”的“后退”按钮会显示如下:
因此,当我点击“&lt; Categories”(即后退按钮)时,它会返回到根类别列表。这一切都很好。
我想要做的是,检测单击后退按钮的时间,然后处理操作。
因为目前,如果我进入一个类别深入3级,一切正常。但是,当我开始“返回”时,之前加载的产品仍保留在结果表中。我希望能够在您退回导航时基本上重新加载结果。为了实现这一点,我需要检测单击导航窗口中的后退按钮的时间。我怎样才能做到这一点?
答案 0 :(得分:4)
您可以听到按下后退按钮后触发的'close'事件。在导航窗口控制器中的每个示例:
var controller = Alloy.createController().getView();
controller.addEventListener('close', function closed(e) {
controller.removeEventListener('close',closed);
[...]
});
$.navwindow.openWindow(controller); // .open(controller)
或者,您可以收听将在下一个窗口/控制器触发的自定义事件
就像...你的桌面控制器正在等待一个事件,例如'need_refresh'
Ti.App.addEventListener('need_reload', function() {
loadNewContent();
});
您可以使用fireEvent
Ti.App.fireEvent('need_reload');
然后,当用户按下后退按钮时,您的表格已经刷新。
我希望能帮到你:)。