0

我在我的应用程序中使用 MonoTouch.Dialog;但是,有问题的表单是使用 UIViewController 实现的,我在其中添加了 TableView(因此我也可以添加 UIToolbar)。

我喜欢 MonoTouch.Dialog.Utilities 中的 ImageLoader,并尝试在 DataSource 的 GetCell() 方法中使用它,以便 TableView 从 URL 呈现图像。

                var callback = new ImageLoaderCallback(controller, cell.ImageView, indexPath);  // ImageLoaderCallback implements IImageUpdated
                cell.ImageView.Image = ImageLoader.DefaultRequestImage(new Uri(picFV.Value), callback);

问题是,在下载 URL 之前,ImageView 的空间被折叠(因此图像右侧的文本实际上锚定在表格的左侧)。

我想做的是显示一个与下载图像具有相同尺寸的临时本地图像,这样当 ImageLoader 完成检索和渲染图像时,用户体验就不会那么刺耳。

我尝试在 GetCell() 调用中执行以下操作... cell.ImageView.Image 设置为其他一些图像(下面未显示),然后我获得了对从 ImageLoader.DefaultRequestImage 返回的内容的引用。

                var image = ImageLoader.DefaultRequestImage(new Uri(picFV.Value), callback);
                callback.Image = image;

最后一行将 ImageLoader 返回的图像引用填充到回调的状态中,当 ImageLoader 完成时,回调将替换单元格的 ImageView.Image(见下文):

    // callback class for the MonoTouch.Dialog image loader utility
    private class ImageLoaderCallback : IImageUpdated
    {
        private ListViewController controller;
        private UIImageView imageView;
        private NSIndexPath indexPath;

        public ImageLoaderCallback(ListViewController c, UIImageView view, NSIndexPath path)
        {
            controller = c;
            imageView = view;
            indexPath = path;
        }

        public UIImage Image { get; set; }

        void IImageUpdated.UpdatedImage(Uri uri)
        {
            if (uri == null)
                return;
            if (Image != null)
                imageView.Image = Image;
            // refresh the display for the row of the image that just got updated
            controller.TableView.ReloadRows(new NSIndexPath [] { indexPath }, UITableViewRowAnimation.None);                
        }
    }

但是,这不起作用,因为当 ImageLoader 尝试呈现其 ImageView 时,它似乎需要被 TableView“拉动”(即 ImageLoader 回调永远不会被调用,因为没有人拉动 URL)。

我该如何完成这个场景?

谢谢!

4

1 回答 1

1

我知道这是一个老问题了,但是我在搜索同样的东西时遇到了这个问题,并且看到了下面的博客文章,其中说明了如何完成这个问题。我还没有尝试过,但希望它可以帮助您或将来遇到此问题的任何其他人:http: //yusinto.blogspot.co.uk/2012/05/background-image-downloading-with.html

于 2013-01-03T11:48:38.610 回答