2012-01-26 3 views
1

내 문제는 다음과 같습니다. 오디오 파일을 재생할 때 여러 개의 ImageStringElements 섹션이 생성됩니다.Monotouch.dialog의 일부로 ImageStringElement의 이미지를 동적으로 변경하십시오.

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 한 이미지

+0

을 변경하려면 SetImage API를 호출 고마워. 그러나, 어떻게 ElementTapped() 내에서'SetImage'를 호출하고 섹션의 해당 이미지로 현재 셀을 자동으로 업데이트합니까? – kos

+0

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

+1

니스. 위의 코드에서 몇 가지 사소한 변경을 한 후에 작동합니다. 즉, public override UITableViewCell GetCell (UITableView tv) { base.GetCell (tv); cell.ImageView.Image = image; currentCell = 셀; }'to public override UITableViewCell GetCell (UITableView tv) { var cell = base.GetCell (tv); cell.ImageView.Image = currentImage; currentCell = 셀; return currentCell; }' – kos

관련 문제