我有一个tableview
用代码创建的(没有storyboard
):
class MSContentVerticalList: MSContent,UITableViewDelegate,UITableViewDataSource {
var tblView:UITableView!
var dataSource:[MSC_VCItem]=[]
init(Frame: CGRect,DataSource:[MSC_VCItem]) {
super.init(frame: Frame)
self.dataSource = DataSource
tblView = UITableView(frame: Frame, style: .Plain)
tblView.delegate = self
tblView.dataSource = self
self.addSubview(tblView)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataSource.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .Subtitle, reuseIdentifier: nil)
let record = dataSource[indexPath.row]
cell.textLabel!.text = record.Title
cell.imageView!.downloadFrom(link: record.Icon, contentMode: UIViewContentMode.ScaleAspectFit)
cell.imageView!.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
print(cell.imageView!.frame)
cell.detailTextLabel!.text = record.SubTitle
return cell
}
}
在另一堂课中,我有一个扩展方法来下载图像异步:
extension UIImageView
{
func downloadFrom(link link:String?, contentMode mode: UIViewContentMode)
{
contentMode = mode
if link == nil
{
self.image = UIImage(named: "default")
return
}
if let url = NSURL(string: link!)
{
print("\nstart download: \(url.lastPathComponent!)")
NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: { (data, _, error) -> Void in
guard let data = data where error == nil else {
print("\nerror on download \(error)")
return
}
dispatch_async(dispatch_get_main_queue()) { () -> Void in
print("\ndownload completed \(url.lastPathComponent!)")
self.image = UIImage(data: data)
}
}).resume()
}
else
{
self.image = UIImage(named: "default")
}
}
}
我在其他地方使用了此功能并正常工作,根据我的日志,我了解到下载的图像没有问题(渲染单元时),下载图像后,单元UI未更新。
我也尝试使用像Haneke这样的缓存库,但是问题存在并且没有改变。
请帮助我理解错误
谢谢
设置图像后,您应该致电 self.layoutSubviews()
编辑:从改正setNeedsLayout
为layoutSubviews
问题内容: 我试图异步加载我的FriendsTableView(UITableView)单元内的图片。图像加载正常,但是当我滚动表格时,图像将更改几次,并且错误的图像被分配给错误的单元格。 我尝试了所有可以在StackOverflow中找到的方法,包括将标签添加到原始文件,然后检查它,但是那没有用。我还在验证应使用indexPath更新的单元,并检查该单元是否存在。所以我不知道为什么会这样。 这是
问题内容: 注意:请没有库。 这对我来说很重要。另外,对此有各种各样的答案,但我发现没有一个能很好地解决该问题。请不要将其标记为重复项。提前致谢! 我的问题是,如果您在表中快速滚动,会看到旧图像并闪烁。 我所读问题的解决方案是取消 数据请求。但是我不知道如何在正确的时间和地点做到这一点。可能还有其他解决方案,但不确定。 这是我到目前为止的内容: 图像缓存类 用法 有什么想法吗? 问题答案: 几个问
问题内容: 我想从我的应用程序中的URL加载图像,因此我首先尝试使用Objective-C,但是它可以正常工作,但是对于Swift,我遇到了编译错误: ‘imageWithData’不可用:使用对象构造’UIImage(data :)’ 我的功能: 在Objective-C中: 有人可以解释一下为什么Swift无法使用它,以及如何解决该问题。 问题答案: Xcode 8或更高版本•Swift 3或
问题内容: 我想使用jQuery在页面上异步加载外部图像, 并且尝试了以下方法: 但是它总是返回错误,是否有可能像这样加载图像? 我尝试使用method,但是它有效,但是我不知道如果图像不可用,如何设置超时时间(404)。我怎样才能做到这一点? 问题答案: 无需ajax。您可以创建一个新的图像元素,设置其source属性,并在完成加载后将其放置在文档中的某个位置:
下面是我的代码: 只是一个加载图像的文件。 我得到以下错误: 以下是完整的代码:
我想从我的应用程序中的URL加载一个图像,所以我首先尝试使用Objective-C,它成功了,但是,使用Swift,我有一个编译错误: “imageWithData”不可用:使用对象构造“UIImage(数据:)” 我的职能: 在目标C中: 有人能给我解释一下为什么不能与Swift一起工作,以及我如何解决这个问题。