我正在使用alamofire获取数据到我的应用程序然后到tableview然后到details视图,我有两列图像在我的数据库一个名为"document"第二个名为document2;有些行在document中有图像,有些行在document2上,所以当我使用下面的代码加载图像时,它只加载一个图像
import UIKit
import Alamofire
import SwiftyJSON
import SDWebImage
import SwifterSwift
import Kingfisher
import ImageSlideshow
class DetailsViewController: UIViewController {
var data: JSON?
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var imageView2: UIImageView!
@IBOutlet weak var AdTitle: UILabel!
@IBOutlet weak var AdDetails: UITextView!
@IBOutlet weak var ContactBtn: UIButton!
@IBOutlet weak var ShareBtn: UIButton!
@IBOutlet weak var DateLabel: UILabel!
@IBOutlet weak var CityLabel: UILabel!
@IBOutlet weak var imagesSlideshowView: ImageSlideshow!
override func viewDidLoad() {
super.viewDidLoad()
if let id = Helper.getUserId() {
ContactBtn.isHidden = false
} else {
ContactBtn.isHidden = true
}
AdDetails.textContainer.heightTracksTextView = true
AdDetails.isScrollEnabled = false
//self.navigationController?.navigationBar.semanticContentAttribute = .forceRightToLeft
let PostTitle = data!["title"].string
self.title = PostTitle!
let imageUrl = data!["document"].string
let url = NSURL(string:("https://site/uploads/" + imageUrl!))
let imageUrl2 = data!["document2"].string
let Image2url = NSURL(string:("https://site/uploads/" + imageUrl2!))
imageView.sd_setImage(with: url as URL?, placeholderImage: UIImage(named: "placeholder.png"))
CityLabel.text = data!["city"].string
AdTitle.text = data!["title"].string
AdDetails.text = data!["message"].string
let PostTime = data!["time"].string!
let startDate = PostTime
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date = dateFormatter.date(from: startDate)
let converted = date?.timeAgoDisplay()
DateLabel.text = date?.timeAgoDisplay()
let uploadsBaseUrl = "https://site/uploads/"
var imagesSlideshowView = ImageSlideshow()
if let image1urlString = data?["document"].string,
let image1url = URL(string: uploadsBaseUrl + image1urlString),
let image2urlString = data?["document2"].string,
let image2url = URL(string: uploadsBaseUrl + image2urlString) {
var imagesSources: [KingfisherSource] = []
imagesSources.append(KingfisherSource(url: image1url))
imagesSources.append(KingfisherSource(url: image2url))
imagesSlideshowView.setImageInputs(imagesSources)
let pageIndicator = UIPageControl()
pageIndicator.currentPageIndicatorTintColor = UIColor.lightGray
pageIndicator.pageIndicatorTintColor = UIColor.black
imagesSlideshowView.pageIndicator = pageIndicator
}
现在我添加了一个视图并安装了所需的库,
ImageSlideshow翠鸟ImageSlideshow/翠鸟ImageSlideshow/AlamofireImageSlideshow/SDWebImage静止图像不传递给视图?!
更新了代码,使其成为@denis-kozhukhov建议的幻灯片
我不清楚你想要实现什么,但会尝试用你的代码做一些事情,也许你需要这样的东西:
import UIKit
import ImageSlideshow
import ImageSlideshowKingfisher
class SomeController: UIViewController {
let uploadsBaseUrl = "https://mysite.co/uploads/"
var imagesSlideshowView: ImageSlideshow!
func viewCreateFunc() {
imagesSlideshowView = ImageSlideshow(frame: someFrame)
self.addSubview(imagesSlideshowView)
}
func imagesUpdateFunc() {
if let image1urlString = data?["document"]?.string,
let image1url = URL(string: uploadsBaseUrl + image1urlString),
let image2urlString = data?["document2"]?.string,
let image2url = URL(string: uploadsBaseUrl + image2urlString) {
var imagesSources: [KingfisherSource] = []
imagesSources.append(KingfisherSource(url: image1url))
imagesSources.append(KingfisherSource(url: image2url))
imagesSlideshowView.setImageInputs(imagesSources)
// removed html prepare code
}
}
}
我更新了你的代码,使它更安全,更清晰,更改命名。
我还添加了代码使用ImageSlideshow与翠鸟(我看到你使用SDWebImage,但我现在不使用它,没有选项为它做代码,但大部分是相似的)。
只管去做
pod "ImageSlideshow/SDWebImage"
运行pod install
使数据源像这样
import SDWebImage
func displayImages(){
var imageSDWebImageSrc = [SDWebImageSource]()
for (_,i) in (newsModel?.banners ?? [Banner]()).enumerated() {
let image = SDWebImageSource(urlString: i.image ?? "")
if let sdURL = image{
imageSDWebImageSrc.append(sdURL)
}
}
imageSlider.reloadInputViews()
}