2012-01-26 5 views
1

の一部としてImageStringElementで画像を変更しますは、動的に次のように私の問題があるmonotouch.dialog

Section s = new Section(); 
foreach (var idea in ideas) 
{ 
    s.Add(new ImageStringElement(idea.Id, delegate {ElementTapped();}, playImage)); 
} 

ここで、要素の1つをタップすると、playImageを別のもの、つまりPauseImageに変更したいと思います。次に、それが再び選択されると、PlayImageに戻ります。 ElementTapped()メソッドでこれを行う方法がわかりません。基本的に私は、音声メモのアプリと同様の機能を持っていると思います。

答えて

6

あなたはImageStringElementをサブクラス化し、2つの変更を加えることができます。

追加:

class FlippingImageElement : ImageStringElement 
{ 
    UIImage currentImage; 
    UITableViewCell currentCell; 

    public FlippingImageElement (string caption, UIImage image) : base (caption, image) 
    { 
     currentImage = image; 
    } 

    public override UITableViewCell GetCell (UITableView tv) 
    { 
     var cell = base.GetCell (tv); 
     cell.ImageView.Image = currentImage; 
     currentCell = cell; 
    } 

    public void SetImage (UIImage image) 
    { 
     currentImage = image; 
     if (currentCell != null) 
      currentCell.ImageView.Image = currentImage; 
    } 
} 

使用この新しい要素の代わりに、MonoTouch.Dialog 1、及び画像

+0

に変更するSetImage APIを呼び出しますこれに感謝します。しかし、どのように私は '' ElementTapped() '内SetImage'と自動的節でそのイメージと現在のセルを更新呼ぶのですか? – kos

+0

flipping.Tapped + =デリゲート{flipping.SetImage(anotherImage); } –

+1

ニース。上記のコードのいくつかの小さな変更の後、つまりpublic override UITableViewCell GetCell(UITableView tv) { base.GetCell(tv); cell.ImageView.Image =画像。 currentCell =セル。 } 'to 'パブリックオーバーライドUITableViewCell GetCell(UITableView tv) { var cell = base.GetCell(tv); cell.ImageView.Image = currentImage。 currentCell =セル; return currentCell; } ' – kos

関連する問題