Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在滚动视图中隐藏未使用的图像(Swift)_Ios_Swift_Firebase_Io_Scrollview - Fatal编程技术网

Ios 在滚动视图中隐藏未使用的图像(Swift)

Ios 在滚动视图中隐藏未使用的图像(Swift),ios,swift,firebase,io,scrollview,Ios,Swift,Firebase,Io,Scrollview,我需要隐藏未使用的图像。怎么做? 在我的代码中,我有三个图像,但并非所有的图像都被使用。如何隐藏第三个图像?然后,如果我添加第三个图像,我需要在不更改代码的情况下再次取消隐藏该图像 import UIKit import Firebase import FirebaseDatabase import SDWebImage class ScrollViewController: UIViewController, UIScrollViewDelegate { @IBOutlet weak va

我需要隐藏未使用的图像。怎么做? 在我的代码中,我有三个图像,但并非所有的图像都被使用。如何隐藏第三个图像?然后,如果我添加第三个图像,我需要在不更改代码的情况下再次取消隐藏该图像

import UIKit
import Firebase
import FirebaseDatabase
import SDWebImage

class ScrollViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView!

var image = [String]()

override func viewDidLoad() {
    super.viewDidLoad()

    loadImages()

}
func loadImages() {

    Database.database().reference().child("Студии2").observeSingleEvent(of: .value, with: { (snapshot) in

        let newImages = [String]()

        for child in snapshot.children {
            let snap = child as! DataSnapshot
            let imageSnap = snap.childSnapshot(forPath: "Photo")
            let dict = imageSnap.value as! [String: AnyObject]
            let url = dict["image"] as? String ?? ""
            let url2 = dict["image1"] as? String ?? ""
            let url3 = dict["image3"] as? String ?? ""
            self.image.append(url)
            self.image.append(url2)
            self.image.append(url3)

            for i in 0..<self.image.count {
                let imagesArray = UIImageView()
                imagesArray.sd_setImage(with: URL(string: self.image[i]))
                let xPos = self.view.frame.width * CGFloat(i)
                imagesArray.frame = CGRect(x: xPos, y: 0, width: self.scrollView.frame.width, height: self.scrollView.frame.height)


                self.scrollView.contentSize.width = self.scrollView.frame.width * CGFloat(i + 1)
                self.scrollView.addSubview(imagesArray)
            }
        }
        self.image = newImages
    })
}
导入UIKit
进口火基
导入FirebaseDatabase
导入SDWebImage
类ScrollViewController:UIViewController、UIScrollViewDelegate{
@iBCROLLVIEW:UIScrollView!
var image=[String]()
重写func viewDidLoad(){
super.viewDidLoad()
loadImages()
}
func loadImages(){
Database.Database().reference().child(“ССцццц2”).observeSingleEvent(of:.值,其中:{(快照)位于
让newImages=[String]()
对于snapshot.children中的子对象{
设snap=child as!DataSnapshot
让imageSnap=snap.childSnapshot(forPath:“Photo”)
让dict=imageSnap.value为![String:AnyObject]
让url=dict[“图像”]作为?字符串??“
将url2=dict[“image1”]设为?字符串??“
将url3=dict[“image3”]设为?字符串??“
self.image.append(url)
self.image.append(url2)
self.image.append(url3)

对于0..中的i,您可以过滤掉空对象,以便内容大小正确

下面是如何做到这一点

func loadImages() {
   Database.database().reference().child("Студии2").observeSingleEvent(of: .value, with: { snapshot in

      for child in snapshot.children {
         guard let snap = child as? DataSnapshot else { return }
         let imageSnap = snap.childSnapshot(forPath: "Photo")
         guard let dict = imageSnap.value as? [String: AnyObject] else { return }

         self.image.append(dict["image"] as? String ?? "")
         self.image.append(dict["image1"] as? String ?? "")
         self.image.append(dict["image3"] as? String ?? "")

         let links = self.image.filter { !$0.isEmpty }

         let size = self.view.frame.size

         links.enumerated().forEach {
            let imageView = UIImageView()
            imageView.sd_setImage(with: URL(string: $0.element))
            let x = size.width * CGFloat($0.offset)
            imageView.frame = CGRect(x: x, y: 0, width: size.width, height: size.height)

            self.scrollView.addSubview(imageView)
         }

         self.scrollView.contentSize.width = size.width * CGFloat(links.count)
      }
      self.image = [String]()
   })
}

您需要更具体地说明未使用的图像、第三个图像、隐藏图像,可能还需要一个翻译器。未使用的含义是什么?从哪里隐藏?第三个图像是什么?…这是一个非常模糊的问题…如果您检查我的代码,我在scrollView[“image3”]…我的firebase数据库没有字符串“image3”。当在模拟器中运行应用程序时,我在scrollView中看到两个图像和一个空图像(因为他不在场)。因此我需要隐藏一个空图像。当一个更改了我的代码并启动应用程序时,我收到的是没有图像的空屏幕。如果我理解正确,我必须更改除此代码之外的所有内容?Database.Database().reference().child(“Сбббб2”).observeSingleEvent(of:.value,with:{(snapshot)in let newImages=[String]()用于快照中的子对象。子对象{let snap=child as!DataSnapshot let imageSnap=snap.childSnapshot(forPath:“Photo”)let dict=imageSnap.value as![String:AnyObject]let url=dict[“image”]as?String???…let url3=dict[“images”]as?String??“self.image.append(url)…self.image.append(url3)应该是正确的。你能在let size上设置一个断点,看看这是否是一个问题吗?也许我不理解一些东西,但是链接没有值,如果我在let size@Бццццццццццццццв1074