2012-01-14 10 views
0

Titanium Mobileでの開発。ScrollViewからのビューの削除

削除ボタンをクリックすると、scrollViewからビューを削除する必要があります。私は、私のボタンがクリックされると、scrollViewがリッスンするカスタムイベントを発生させます。私の質問は、削除する必要のあるビューをどのように参照するのですか?これらのビューは、scrollViewに動的に追加され、ビューに関する一意の情報はありません。カスタムイベントを発生させるときにビュー自体を渡そうとしましたが、これは機能しません。どのビューを削除するかはscrollViewにどのように伝えますか?それはただ、その親を取得し、それを削除します:)ケーキの一部だ - - あなたはビュー内の削除ボタンがある場合

+0

ことがあります作成中に一意の識別子を割り当てることができます。後で使用できます –

+0

ID:myUniqueID?私はこれについて考えましたが、私はuniqueIDを作成する方法を考え出す必要があります。私は乱数を使うことができたと思う。 scrollViewには実際に重複した項目が含まれている可能性があるため、ビュー自体については一意ではありません。また、どのようにそのビューを見つけることができますか?私はすべてのscrollViewの子どもたちがそのIDに対してチェックしてループしますか? – Chris

+0

いくつかのボタンが1つだけあれば、削除したいと思っていますか? –

答えて

3

scrollView.remove(e.source.parent);

をここで私は、デモページを作成しました:

var scrollView = Titanium.UI.createScrollView({ 
    contentWidth: 'auto', 
    contentHeight: 'auto', 
    top: 0, 
    showVerticalScrollIndicator: true, 
    showHorizontalScrollIndicator: true, 
    layout: 'vertical' 
}); 

var colors = ['red', 'green', 'blue', 'orange', 'purple', 'yellow']; 

for (var i = 0; i < 6; i++) { 

    var view = Ti.UI.createView({ 
     backgroundColor: colors[i], 
     borderRadius: 10, 
     width: 300, 
     height: 200, 
     top: 10, 
     id: i 
    }); 
    scrollView.add(view); 

    var deleteButton = Ti.UI.createButton({ 
     borderRadius: 3, 
     style: Ti.UI.iPhone.SystemButtonStyle.PLAIN, 
     backgroundGradient: { 
      type: 'linear', 
      colors: [ '#c7c7c7', '#686868' ], 
      startPoint: { x: 0, y: 0 }, 
      endPoint: { x: 0, y: 30 }, 
      backFillStart: false 
     }, 
     title: 'Delete view ' + i, 
     font: { fontSize: 12, fontWeight: 'bold' }, 
     color: '#fff', 
     width: 120, 
     height: 30 
    }); 
    view.add(deleteButton); 

    deleteButton.addEventListener('click', function(e) { 
     Ti.API.info(e.source.id); // use this ID 
     scrollView.remove(e.source.parent); 
    }); 

} 

Ti.UI.currentWindow.add(scrollView); 
+0

scrollView内のビュー(e.src.parent)インデックスを取得する方法はありますか?理由は、このビューに関連付けられているオブジェクトも削除したいからです。このオブジェクトは、グローバルにリストに格納されます。ビューのインデックスは、リスト内のオブジェクトのインデックスと同じになるはずです。 – Chris

+0

TableViewではないので、インデックスを取得するのは難しいでしょう。おそらく最も簡単な方法は、ビューにIDを設定すること(私は上記のコードを更新しました)、作成時および削除時にオブジェクトに同じIDを与え、要求されたIDを持つオブジェクトを削除することです。 –

関連する問題