2011-07-07 30 views
0

Titanium SDK版本:1.7.0 iPhone SDK版本:4.2Appcelerator。更新行標籤

我正在使用Appcelerator開發iOS應用程序。 在這個應用程序中,我得到了一個包含聯繫人數據表的窗口。 用戶可以單擊此表中的項目,然後打開一個新窗口,他們可以在其中編輯聯繫人詳細信息,然後單擊保存。

用戶單擊保存後,我希望父窗口中的表使用從編輯窗口返回的信息更新點擊行的數據。

我的問題是。如果我得到行索引,如何更新特定行中的標籤? 我打算從一個自定義事件進行此更新,所以我不會使用e.index只有「保存」索引編號爲例5.

我知道有一個函數稱爲「updateRow」,但我似乎只能更新該行的標題而不是其子元素。

感謝您的所有意見!

回答

0

根據我的經驗,無論何時進行更改,最好是tableView.setData(rowArray),而不是selectRow,updateRow等。關於實際的行元素,您應該可以使用row.children [x] .children [x ]。問題是你必須密切關注層次結構。讓我們知道你是否找到更好的方法!

+0

如果我使用setData數組不會被更新,並不會反映這些變化。然後,我必須再次向API發出請求,並且沒有任何收穫。我想做一個「ajax」請求,其中表更新而不重新加載。 –

2

這是我會採取的方法。

假設

  1. WIN1包含表(表1)和 包含您 可以在 編輯發生更新(數據)
  2. WIN2是行的陣列

在點擊win2中的「保存」按鈕,在關閉窗口之前觸發帶有更新的聯繫人詳細信息的事件;

Ti.App.fireEvent('contact.change' , updatedContactObject); 
// Do database save here if required 
win2.close(); 

在WIN1添加事件監聽:

Ti.App.addEventListener('contact.change' , function(e){ 
    var updatedContactObject = e.updatedContactObject; 
    // 
    // update the array and the row here 
    // 
    data[ updatedContactObject.id ] = updatedRowData; 
    table1.setData(data); 
}); 
+0

看起來很有趣!所以你說的是更新數組本身而不是任何行更好?什麼是「updatedContactObject」。我只是在編輯窗口中使用textfields。如果可能的話,請稍微擴展代碼。我不是100%確定如何做更新位。 –

+0

我越來越近了。不幸的是我使用表格部分,所以我不能使用你的例子。或者我可以嗎?請幫忙! –

+0

請幫我理解你的代碼。 –