MonoTouch.Dialog ImageLoader in GetCell



我有一个带有自定义元素的nonotouch.dialog视图控制器。我的元素实现了iimageupd。在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

在"更新图"回调中,如何访问正确的单元格以更新图像?

我建议您子类UITableViewCell,例如ImageCell : UITableViewCell。然后,您制作一个从UIVIEW(ImageCellView : UIView, IImageUpdate)继承并实现IImageUpdated的类。在该GetCell()中,您返回单元的实例,然后将ID或其他任何内容传递给您的单元格。ImageCellView实例添加到单元格的ContentView中。然后,每个视图都应该很好地知道要加载什么,更新的内容以及所有内容都已封装。

您可以在Miguel的TweetStation代码中看到一个示例:https://github.com/migueldeicaza/tweetstation/blob/master/master/tweetstation/ui/tweetcell.cs#l216

我喜欢Krumelur的答案。

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

当请求单元格时,您可以做的一件事是将单元格保存为字段,然后访问它。诀窍是,到图像出现时(例如从现在开始30秒),您的元素可能不在屏幕上,并且您的单元格将无效,因此您将更新别人的单元格。因此,您将继续跟踪该单元格与您的元素链接并手动处理。

最新更新