在第一个视图控制器上,我有一个表视图,其中列出了各种站点,比如google,堆栈溢出.对于添加的每个服务,将根据该站点的第一个字母加载图像。所以一个T的图片会加载到Twitter上。
如果用户需要,他/她可以点击那个单元,进入第二个VC并添加URL。当用户返回到第一个VC时,该站点将尝试提取图标而不是字母图像.这是可行的,但不是优雅的。
我最初想要的是,每一张图片一加载就会显示出来,显然不是一次就显示出来的,所以它会干扰用户与应用程序的交互。
现在正在发生的是,他们一次出现几个(这是好的),但不是在正确的地方,最初。因此,假设我有亚马逊、谷歌、微软、Facebook和apple...the图标,那么微软可能会出现googles徽标,几秒钟后它可能会转移到Facebook,然后取决于它可能会移动多少,直到它完全匹配为止--…。这也会发生,如果我滚动‘下面的折叠’,几分钟后,将正确本身(然而,单元格标题保持有序)。
所以很明显,我的代码有问题,我希望至少能得到它,这样它第一次就会把Facebook放在正确的位置,然后再用google等等。
或者另一个选项是,所有的图像都从字母图像开始,然后代码尝试用favicon...and替换它,在第一次尝试时让它正确。
任何帮助都是很好的
这是我的表视图cellForRowAt代码
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "serviceCell", for: indexPath as IndexPath) as! ServiceTableViewCell
let row = indexPath.row
cell.serviceNameLabel.text = serviceArray[row].serviceName
DispatchQueue.global().async {
let myURLString: String = "http://www.google.com/s2/favicons?domain=\(self.serviceArray[row].serviceUrl)"
if let myURL = URL(string: myURLString), let myData = try? Data(contentsOf: myURL), let image = UIImage(data: myData) {
cell.serviceLogoImage.image = image
} else {
cell.serviceLogoImage.image = UIImage.init(named: "\(self.getLetterOrNumberAndChooseImage(text: self.serviceArray[row].serviceName))")
}
}
return cell
}
}https://stackoverflow.com/questions/42104326
复制相似问题