Я новичок в Swift. Невозможно найти решение для проблемы ниже. Ниже показан ViewController с CollectionView, и когда вы нажимаете на Cell в CollectionView, данные из ячейки (даже если они не находятся в представлении метки и изображения, но находятся в строке массива Book) должны быть отправлены в TabBarCollection, а не из TabBarCollection. Мне нужно отправить эти данные всем детям, как на этом изображении. Позже в потомках TabBar я установлю значение Labels в View Controllers из данных из выбранной ячейки.
Book.swift
import UIKit
struct Book {
let title: String
let image: UIImage?
//Here soon will be more "let", and this data will also have to be send to TabBar but it don't will be show I CollectionViewCell
}
extension Book {
static let books: [Book] = [
Book(title: "Antygona", image: UIImage(named: "imgantygona")!),
//etc
]
}
CollectionViewCell.swift
import UIKit
class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var bookImageView: UIImageView!
@IBOutlet weak var bookTitle: UILabel!
func setup(with book: Book) {
bookTitle.text = book.title
bookImageView.image = book.image
}
}
ViewController
import UIKit
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
@IBOutlet weak var collectionView: UICollectionView!
let books = Book.books
override func viewDidLoad() {
super.viewDidLoad()
let fontAttributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16.0)]
UITabBarItem.appearance().setTitleTextAttributes(fontAttributes, for: .normal)
collectionView.dataSource = self
collectionView.delegate = self
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return books.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "bookCell", for: indexPath) as! CollectionViewCell
let book = books[indexPath.item]
cell.setup(with: book)
return cell
}
}
I видел много решений, но я не могу идеально приспособить его к моей проблеме. :( Спасибо за помощь!
BookInsideViewController.swift
import UIKit
class BookInsideViewController: UIViewController {
@IBOutlet weak var testImageView: UIImageView!
@IBOutlet weak var testLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
}