Navigation 使用按钮(而不是使用钛合金的顶栏)从详细视图返回MasterView
我有一个导航组,使用它我有一个主视图和一个详细视图。使用主视图打开detailView时,navigationGroup会自动在顶部栏上提供一个按钮,以返回主视图 我想要实现的是在detailView上有一个按钮。单击detailView上的按钮,希望处理作业,然后返回MasterView 我可以向detailView上的按钮添加侦听器并执行所需的工作,但是如何关闭detailView并返回MasterView 下面是3个文件的代码Navigation 使用按钮(而不是使用钛合金的顶栏)从详细视图返回MasterView,navigation,titanium,appcelerator,Navigation,Titanium,Appcelerator,我有一个导航组,使用它我有一个主视图和一个详细视图。使用主视图打开detailView时,navigationGroup会自动在顶部栏上提供一个按钮,以返回主视图 我想要实现的是在detailView上有一个按钮。单击detailView上的按钮,希望处理作业,然后返回MasterView 我可以向detailView上的按钮添加侦听器并执行所需的工作,但是如何关闭detailView并返回MasterView 下面是3个文件的代码 ApplicationWindow.js MasterVie
- ApplicationWindow.js
- MasterView.js
- DetailView.js
var MasterView = require('ui/common/MasterView'), DetailView = require('ui/common/DetailView');
var masterView = new MasterView(), detailView = new DetailView();
//create master view container
var masterContainerWindow = Ti.UI.createWindow({
title : 'Product',
});
masterContainerWindow.add(masterView);
//create detail view container
var detailContainerWindow = Ti.UI.createWindow({
title : 'Product Details'
});
detailContainerWindow.add(detailView);
//create iOS specific NavGroup UI
var navGroup = Ti.UI.iPhone.createNavigationGroup({
window : masterContainerWindow
});
self.add(navGroup);
//add behavior for master view
masterView.addEventListener('itemSelected', function(e) {
detailView.fireEvent('itemSelected', e);
navGroup.open(detailContainerWindow);
});
masterContainerWindow.open();
MasterView.js
//Master View Component Constructor
function MasterView() {
//create object instance, parasitic subclass of Observable
var self = Ti.UI.createView({
backgroundColor:'white'
});
//some dummy data for our table view
var tableData = [
{title:'Apples', price:'1.25', hasChild:true, color: '#000'},
{title:'Grapes', price:'1.50', hasChild:true, color: '#000'},
{title:'Oranges', price:'2.50', hasChild:true, color: '#000'},
{title:'Bananas', price:'1.50', hasChild:true, color: '#000'},
{title:'Pears', price:'1.40', hasChild:true, color: '#000'},
{title:'Kiwis', price:'1.00', hasChild:true, color: '#000'}
];
var table = Ti.UI.createTableView({
data:tableData
});
self.add(table);
//add behavior
table.addEventListener('click', function(e) {
self.fireEvent('itemSelected', {
name:e.rowData.title,
price:e.rowData.price
});
});
return self;
};
module.exports = MasterView;
DetailView.js
function DetailView() {
var self = Ti.UI.createView();
var lbl = Ti.UI.createLabel({
text : 'Please select an item',
height : 'auto',
width : 'auto',
color : '#000'
});
self.add(lbl);
self.addEventListener('itemSelected', function(e) {
lbl.text = e.name + ': $' + e.price;
});
var btn = Ti.UI.createButton({
text : 'Close Me'
});
btn.addEventListener('click',function(){
//Do Opertation
//Close Detail View
});
self.add(btn);
return self;
};
module.exports = DetailView;
btn.addEventListener('click', function(e) {
self.fireEvent('closeItem', e);
});
在detailView上,我添加了一个名为“btn”的按钮,它也有一个eventListener。我想使用此按钮关闭detailview。请给我一些建议。
谢谢和问候
Abishek R Srikanth使用详细容器窗口的
android:back
事件或close
事件
btn.addEventlistner('click',function(e){
// your code
// window close for `close` event or manually fire `android:back`
});
这将打开你的主容器窗口
希望这能解决您的问题。我为ApplicationWindow上的detailView创建了一个自定义EventListener,在单击按钮时触发该事件。使用导航组的关闭事件传递detailContainerWindow ApplicationWindow.js
detailView.addEventListener('closeItem', function(e) {
Ti.API.info('event called');
navGroup.close(detailContainerWindow);
});
DetailView.js
function DetailView() {
var self = Ti.UI.createView();
var lbl = Ti.UI.createLabel({
text : 'Please select an item',
height : 'auto',
width : 'auto',
color : '#000'
});
self.add(lbl);
self.addEventListener('itemSelected', function(e) {
lbl.text = e.name + ': $' + e.price;
});
var btn = Ti.UI.createButton({
text : 'Close Me'
});
btn.addEventListener('click',function(){
//Do Opertation
//Close Detail View
});
self.add(btn);
return self;
};
module.exports = DetailView;
btn.addEventListener('click', function(e) {
self.fireEvent('closeItem', e);
});
谢谢,但这只关闭了Detail窗口,没有显示masterView。