UIView或UIImageView的子类?过度思考简单的图像下载任务。

时间:2014-11-06 15:49:56

标签: ios objective-c ios7 uiview uiimageview

这个问题有两个方面:

1)了解创建Asynchronous download ImageView类时哪种子类方法更好

2)如何在UITableViewController中使用此类,以便在UITableViewCell中自动采用类视图。


手头的任务

我刚从某人那里收到了一个有趣的小任务,但我正在推翻解决方案。

enter image description here

问题1 - 哪种方法更适合我的目的?

请记住,我必须重用该类来显示某些图像,可能是UITableViewController,我想到了实现这样一个类的两种可能的方法:

1)创建一个从UIView继承的类,然后添加所需的imageURL属性,然后还为此添加一个UIImageView属性容器一旦用户在表视图控制器中“重新使用”类时设置了URL属性,一旦下载了异步请求,图像将下载到该子类中。

或者

2)UIImageView创建一个类子类,然后只添加一个必需的属性imageURL,这样就可以节省我必须以编程方式创建图像容器的麻烦

问题2:我在UITableViewController中创建re-use这个Asynchronous ImageView class的最佳方式。

问题(至少我认为可能是一个绊脚石)是我创建表格视图控制器时,最好的方法是让这个图像设置UITableView单元格的图像属性吗?

类似

AsynchronousImageViewDownloader *myImageView = [[AsynchronousImageViewDownloader alloc] init];
[myImageView setImageURL:[NSURL urlWithString:@"url.com/image.jpg"]];
//At this point im not sure how to have the image display in the image property below.
//Remember that the image should automatically show in the view when the url has been set.

cell.image = ??

我将如何做这样的事情?

2 个答案:

答案 0 :(得分:1)

创建UITableViewCell的子类,并为AsynchronousImageViewDownloader imageView的该类添加公共属性。在init中,创建imageview(此时它没有URL)并将其添加到self.contentView

然后在cellForRow中,您将能够执行类似

的操作

cell.customImageView.url = @"someURL"

答案 1 :(得分:-1)

使用一个新属性imageURL创建UIImageView子类。在子类的实现中,使用类似于以下内容的方式覆盖setImageURL

- (void)setImageURL:(NSURL *)imageURL
{
    if (!_imageURL) {
        _imageURL = imageURL;
        // Do asynchronous image download, setting the self.image property, on the main thread, in the completion block.
    }

    return _imageURL;
}