0

我有一个带有自定义元素的 MonoTouch.Dialog 视图控制器。我的元素实现了 IImageUpdated。在 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 回调中,如何访问正确的单元格来更新图像?

4

2 回答 2

0

我推荐你子类UITableViewCell,喜欢ImageCell : UITableViewCell。然后创建一个继承自 UIView( ImageCellView : UIView, IImageUpdate) 并实现的类IImageUpdated。在这种情况下,GetCell()您返回您的单元格的一个实例,并将一个 ID 或其他任何内容传递给您的单元格。该ImageCellView实例被添加到单元格的ContentView. 然后每个视图都应该很好地知道要加载什么以及要更新什么,并且所有内容都被封装了。

您可以在 Miguel 的 TweetStation 代码中看到一个示例:https ://github.com/migueldeicaza/TweetStation/blob/master/TweetStation/UI/TweetCell.cs#L216

于 2012-11-13T20:10:51.490 回答
0

我喜欢 Krumelur 的回答。

也就是说,这是一个很好的观察:元素可能在任何时间点都没有活动单元格。在这些情况下,这意味着该元素尚未在屏幕上可见。

当请求单元格时,您可以做的一件事是将单元格保存为字段,然后再访问它。诀窍是,当图像出现时(比如从现在起 30 秒),您的元素可能已超出屏幕,并且您的单元格将无效,因此您将更新其他人的单元格。因此,您需要跟踪该单元格仍与您的元素相关联并手动处理。

于 2012-11-14T17:40:52.113 回答