2014-04-26 80 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

相關問題