Добавление cell из одного tableView в другой
Вопрос заключается в следующем: Есть два tableView. При long press на ячейку первого tableView необходимо добавить эту ячейку во второй tableView (избранное). Cells на втором VC еще не настраивал , и в данный момент они отличаются. Нужно ли делать сell's одинаковыми , либо оно будет ставиться по дефолту? Long press настроил (пока что для проверки - меняет background color). Точной информации по данному вопросу не нашел. Буду благодарен помощи более опытных коллег. Заранее благодарю за ответ.
Первый tableView:
import UIKit
class ListViewController: UIViewController {
@IBOutlet var tableView: UITableView!
private var films = [Films]()
private var genres = [Genres]()
func getFilms() {
Networking.shared.getAllMovies(value: "/movie/popular?api_key=a837e864210a43d0d8485e7294324e9e&language=en-US&page=1") { films in
self.films = films
self.tableView.reloadData()
}
}
func getGenres() {
Networking.shared.getAllGenres(value: "/genre/movie/list?api_key=a837e864210a43d0d8485e7294324e9e&language=en-US") { genres in
self.genres = genres
self.tableView.reloadData()
}
}
override func viewDidLoad() {
super.viewDidLoad()
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(self.longPress(longPressGestureRecognizer:)))
self.view.addGestureRecognizer(longPressRecognizer)
getFilms()
}
@objc func longPress(longPressGestureRecognizer: UILongPressGestureRecognizer) {
if longPressGestureRecognizer.state == UIGestureRecognizer.State.began {
let touchPoint = longPressGestureRecognizer.location(in: self.view)
if self.tableView.indexPathForRow(at: touchPoint) != nil {
tableView.backgroundColor = .red
}
}
}
}
extension ListViewController: UITableViewDelegate , UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print(films.count)
return films.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell" , for: indexPath) as! ListCell
let film = films[indexPath.row]
cell.setMovie(movie: film)
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
100
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "DetailsViewController") as! DetailsViewController
let model = films[indexPath.section]
vc.modalPresentationStyle = .formSheet
vc.model = films[indexPath.section]
present(vc, animated: true, completion: nil)
}
}
Второй tableView (избранное)
import UIKit
class FavouritesViewController: UIViewController {
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension FavouritesViewController: UITableViewDelegate , UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FavouritesCell" , for: indexPath) as! FavouritesCell
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "FavouriteDetailsViewController") as! FavouriteDetailsViewController
// let model = movies[indexPath.section]
vc.modalPresentationStyle = .formSheet
// vc.model = movies[indexPath.section]
present(vc, animated: true, completion: nil)
}
}
Ячейка:
import UIKit
import SDWebImage
class ListCell: UITableViewCell {
@IBOutlet var filmPicture: UIImageView!
@IBOutlet var filmOverview: UILabel!
@IBOutlet var filmName: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func setMovie(movie: Films){
filmPicture.sd_setImage(with: movie.imageURL)
filmName.text = movie.filmTitle
filmOverview.text = movie.overview
}
}