2012-01-26 35 views
1

我的問題如下: 我正在創建一個包含多個ImageStringElements的部分,當選定要播放音頻文件時動態更改ImageStringElement中的圖像作爲monotouch.dialog的一部分

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

現在,當點擊其中一個元素時,我想將playImage更改爲另一個元素,即PauseImage。然後,再次選擇時,它會變回PlayImage。不知道如何在ElementTapped()方法中執行此操作。基本上我想有一個類似於語音備忘錄應用程序的功能。

回答

6

你也可以繼承ImageStringElement做出兩處修改:

地址:

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,並調用API SetImage改變圖像

+0

感謝這一點。但是,如何在'ElementTapped()'中調用'SetImage'並自動更新當前單元格中的圖像? – kos

+0

flipping.Tapped + =委託{flipping.SetImage(anotherImage); } –

+1

不錯。它在上面的代碼稍作修改之後起作用,即改變'public override UITableViewCell GetCell(UITableView tv) {base.GetCell(tv);} cell.ImageView.Image = image; currentCell = cell; (UITableView電視) { } var cell = base.GetCell(tv); cell.ImageView.Image = currentImage; currentCell = cell;返回currentCell; }' – kos