2014-04-26 17 views
0

我开发了钛桌面。这里如果我有选择任何行,需要将行值从一个窗口传递到下一个窗口。将选中的tableview行数据从一个窗口传递到下一个窗口中的钛

但是从我的代码中,

正在成功获取表格列表。行数据也通过了。

但是我面临一个问题,第一次单击一行意味着空值被传递。之后,回来列表视图,并单击另一行意味着上一个选定的行ID传递到下一个窗口。为什么我面临这个问题?这里有什么问题?请给我一个解决方案。

我已经使用以下代码:

dataArray = []; 

for(var i=0; i<json.length; i++){ 

    var row = Ti.UI.createTableViewRow({ 
     className: 'row', 
     objName: 'row', 
     folder_id:json[i].folder_id, 
     layout : 'horizontal', 
     touchEnabled: true, 
     width: "100%", 
     height: Ti.UI.SIZE, 
    }); 

    row.add(Ti.UI.createLabel({ 
     text: json[i].folder_id, 
     title: json[i].folder_id, 
     left: 10, 
     top: 5, 
     width: 0, 
     visible : false, 
     font: { fontSize: '18dp' }, 
     color: '#040404', 
     wordWrap: true, 
     height: Ti.UI.SIZE, 
     ellipsize: true 
    })); 

    row.add(Ti.UI.createLabel({ 
     text: json[i].folder_name, 
     title: json[i].folder_name, 
     left: 10, 
     top: 5, 
     width: 100, 
     font: { fontSize: '18dp' }, 
     color: '#040404', 
     wordWrap: true, 
     height: Ti.UI.SIZE, 
     ellipsize: true 
    })); 

    dataArray.push(row); 

};      

$.FoldertableView.setData(dataArray); 

$.FoldertableView.addEventListener('click', function(e){ 
    Ti.API.info("folder_id"+ e.rowData.folder_id); 
    var managereditfolder =Alloy.createController('editfolder').getView(); 
    Ti.App.Properties.setString("folder_id", e.rowData.folder_id); 
    managereditfolder.open(); 
});             

editfolder.js

folder_id = Ti.App.Properties.getString("folder_id"); 
Ti.API.info("Edit Folder folder_id"+ folder_id); 

这里我得到等的输出:

folder_id 14 [WARN]:无效值自动指定属性顶部 [信息]:编辑文件夹folder_ ID空

folder_id 5 [WARN]:财产顶部 [INFO]指定的值无效汽车:编辑文件夹folder_id 14

请检查我的代码,并给我一个解决方案

回答

1

你不需要将数据保存到Ti.App.Properties以将其传递到另一个视图控制器,则可以执行以下操作:


将数据传递到您创建的控制器

var managereditfolder = Alloy.createController('editfolder', { folderId: e.rowData.folder_id }).getView(); 


editfolder.js你会

// This holds all the Objects you pass along when 
// creating the controller 
var args = arguments[0] || {}; 

// Hence, your folderId is args.folderId 
Ti.API.debug(args.folderId); 


附注:接收文件夹ID 不要忘记在你声明的任何新变量之前总是放一个var,否则你可能会在全局范围内遇到麻烦!

0
$.FoldertableView.addEventListener('click', function(e){ 
    Ti.API.info("folder_id"+ e.rowData.folder_id); 
    var managereditfolder = Alloy.createController('editfolder').getView(); 
    managereditfolder.folder_id = e.rowData.folder_id; 
    managereditfolder.open(); 
}); 

editfolder.js你可以简单地通过

$.editFolderWin.folder_id 
+0

嗯访问它,你有没有测试过这个?在我看来,你将变量传递给视图而不是控制器... – mwfire

+0

是的,我已经测试过它。就像制作一个窗口的自定义属性一样。 – Swanand

相关问题