2012-11-13 19 views
0

我有一個自定義的元件的MonoTouch.Dialog視圖控制器。我的元素實現IImageUpdated。在GetCell方法,我加載圖像...MonoTouch.Dialog ImageLoader的在GetCell

var logo = ImageLoader.DefaultRequestImage (new Uri (url), this); 
    if (logo == null) { 
     cell.ImageView.Image = _defaultImage; 
    } else { 
     cell.ImageView.Image = logo; 
    } 

    #region IImageUpdated implementation 

    public void UpdatedImage (Uri uri) 
    { 
     // HOW DO I GET THE CELL HERE? 
     //cell.ImageView.Image = ImageLoader.DefaultRequestImage(uri, this); 
    } 

#endregion 

在UpdatedImage回調,我如何才能獲得正確的細胞更新的形象呢?

回答

0

我建議你繼承UITableViewCell,像ImageCell : UITableViewCell。 然後你從中賺取的UIView(ImageCellView : UIView, IImageUpdate)繼承並實現IImageUpdated類。 在那個GetCell()你返回你的單元格的實例,並傳遞一個ID或任何你的單元格。 的ImageCellView實例被添加到小區的ContentView。 然後,每個視圖都應該很好地知道要載入什麼以及要更新什麼,並且封裝了所有內容。

你可以看到米格爾的TweetStation代碼的例子:https://github.com/migueldeicaza/TweetStation/blob/master/TweetStation/UI/TweetCell.cs#L216

0

我喜歡克魯梅爾爾的答案。

也就是說,這是一個很好的觀察:元素可能沒有激活的細胞在任何時間點。在這些情況下,這意味着該元素尚未在屏幕上可見。

一件事,你可以做,請求單元格時,是將細胞保存爲一個字段,以及日後訪問。訣竅在於,到圖像到來時(比如說從現在起30秒),您的元素可能會在屏幕之外,並且您的單元格將無效,因此您將更新其他人的單元格。因此,您需要跟蹤該單元格與您的元素相關聯並手動處理。