Получить различное количество изображений от collectioncell с использованием опорного пункта
Как я могу получить разные номера изображения от collectionCell в представление ScrollView с использованием военнослужащих? В моем проекте у меня есть три файл ViewController по.
FirstVC - collectionView внутри а TableView для. CollectionView необходимость отображения основных изображений для свиток их. TableView необходимость отображения имени и прокрутки таблицы. (т. е. для тех изображений, которые находятся в FirstVC в collectionCell).
SecondVC - только collectionView. Необходимость отображения альбомов.
ThirdVC - только представление ScrollView внутри файл ViewController. ScrollView нужен свиток изображения которые расположены в изображения папка в военнослужащих.
Поэтому, когда я нажимаю на альбом в secondVC на collectionCell я хотел бы видеть в thirdVC in представление ScrollView изображения, которые находятся в папке изображения в военнослужащих для прокрутки их. Моя структура firebase находится здесь:
{ "users" : { "Y7EHcJuqQWZrVI1HBmNgccbPhm55" : { "name" : "Photos", "posts" : { "images" : { "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13", "image1" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13" }, "qwerty" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13" }, "posts2" : { "images" : { "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13", "image1" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13" }, "qwerty" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/city2.jpg?alt=media&token=64509e18-9884-4449-a081-c67393a7d82a" }, "posts3" : { "images" : { "image" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13", "image1" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13", "image2" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/gallery%2F06BAB847-7C94-40A6-A9C8-C3A11B3F9C81.png?alt=media&token=4f797093-fbc7-437b-935c-d13be1409d13" }, "qwerty" : "https://firebasestorage.googleapis.com/v0/b/test2-29e4b.appspot.com/o/oko1.jpg?alt=media&token=fedea2cb-93b1-496c-9392-0b95f4ada7b5" } } } }
Я сел на firstVC то изображения в ветвь изображений, У меня они отображаются на принте, но что мне делать дальше, я не могу понять.
Мой FirstVC:
import UIKit import Firebase import SDWebImage class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var tableView: UITableView! var nameArray = [String]() var addressArray = [String]() var postImage = [String](), postImage2 = [String](), postImage3 = [String]() override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self loadName() loadImages() tableView.allowsSelection = true } func loadName() { FIRDatabase.database().reference().child("users").observe(FIRDataEventType.childAdded, with: {(snapshot) in let value = snapshot.value! as! NSDictionary self.nameArray.append(value["name"] as? String ?? "") }) } func loadImages() { FIRDatabase.database().reference().child("users").observe(FIRDataEventType.childAdded, with: {(snapshot) in let values = snapshot.value! as! NSDictionary let posts = values["posts"] as? NSDictionary //[String: AnyObject] let posts2 = values["posts2"] as? NSDictionary //[String: AnyObject] let posts3 = values["posts3"] as? NSDictionary //[String: AnyObject] //self.postImage.append(posts?["qwerty"] as? String ?? "") // self.postImage2.append(posts2?["qwerty"] as? String ?? "") // self.postImage3.append(posts3?["qwerty"] as? String ?? "") if let post1 = posts as? [String: AnyObject] { for (_, value) in post1["images"] as! [String: AnyObject] { self.postImage.append(value as! String) } } if let post2 = posts2 as? [String: AnyObject] { for (_, value) in post2["images"] as! [String: AnyObject] { self.postImage2.append(value as! String) } } if let post3 = posts3 as? [String: AnyObject] { for (_, value) in post3["images"] as! [String: AnyObject] { self.postImage3.append(value as! String) } } print(self.postImage3) self.tableView.reloadData() }) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "segue2" { if let indexPaths = self.tableView.indexPathForSelectedRow { let indexPath = indexPaths as NSIndexPath let dvc = segue.destination as! CollectionViewController let imagesArray = [self.postImage[indexPath.row], self.postImage2[indexPath.row], self.postImage3[indexPath.row]] dvc.images = imagesArray.filter({ !($0.isEmpty) }) } } } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return nameArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! TableViewCell cell.userNameLabel.text = nameArray[indexPath.row] let array = [postImage[indexPath.row], postImage2[indexPath.row], postImage3[indexPath.row]] cell.postImageArray = array.filter({ !($0.isEmpty) }) return cell } }
Мой SecondVC:
import UIKit import SDWebImage class CollectionViewController: UICollectionViewController { var images = [String]() override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "segue3" { if let indexPaths = self.collectionView?.indexPathsForSelectedItems { let indexPath = indexPaths[0] as NSIndexPath let dvc = segue.destination as! ViewControllerScrollView dvc.images = [images[indexPath.item]] } } } override func numberOfSections(in collectionView: UICollectionView) -> Int { return 1 } override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return images.count } override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell2 cell.imageView.sd_setImage(with: URL(string: images[indexPath.item])) return cell } }
Мой ThirdVC:
import UIKit class ViewControllerScrollView: UIViewController { @IBOutlet weak var scrollView: UIScrollView! var images = [String]() override func viewDidLoad() { super.viewDidLoad() for i in 0..<images.count { let imageView = UIImageView() imageView.sd_setImage(with: URL(string: images[i])) let xPosition = self.view.frame.width * CGFloat(i) imageView.frame = CGRect(x: xPosition, y: 0, width: self.scrollView.frame.width, height: self.scrollView.frame.height) scrollView.contentSize.width = scrollView.frame.width * CGFloat(i + 1) scrollView.addSubview(imageView) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }
Что я уже пробовал:
Не пробовал, все внутри моего кода