如何将现有 collection 视图添加到 table 视图而不丢失 swift 中的 table 视图单元格
How to add existing collection views to table view without losing table view cells in swift
我正在尝试将两个现有的 collection 视图单元格与它们自己的首选项添加到我已经存在的 table 视图的前两个单元格中,而不会丢失其他 table 视图单元格。现在每个视图都可以手动正常工作。
This is my UI
Collection V1:
import UIKit
final class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var images: UIImageView!
public func configureCollection(photo: UIImage) {
images.image = photo
images.layer.cornerRadius = 12
}
}
Collection V2:
import UIKit
final class SelectCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var selectionTextLabel: UILabel!
public func confCollectionView(selectionText: String){
selectionTextLabel.text = selectionText
}
}
Table 查看
import UIKit
final class homePageTableView: UITableViewCell {
@IBOutlet weak var productPhoto: UIImageView!
@IBOutlet weak var productName: UILabel!
public func configureHomeShop(photo: UIImage, item: String) {
productName.text = item
productPhoto.image = photo
}
}
查看所有内容所在的控制器:
class homeView: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UITableViewDataSource, UITableViewDelegate{
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var collectionViewOne: UICollectionView!
@IBOutlet weak var collectionViewTwo: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
collectionViewOne.register(CollectionViewCell.self, forCellWithReuseIdentifier: "itemsCollectionViewCell")
collectionViewTwo.register(SelectCollectionViewCell.self, forCellWithReuseIdentifier: "SelectCollectionViewCell")
collectionViewTwo.dataSource = self
collectionViewTwo.delegate = self
collectionViewOne.dataSource = self
collectionViewOne.delegate = self
tableView.dataSource = self
tableView.delegate = self
}
// **Functions**
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return itemsArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "shopCell", for: indexPath) as? homePageTableView else {
fatalError()
}
cell.configureHomeShop(photo: photoArrayTV.first!, item: itemsArray.first!)
return cell
}
// MARK: - CollectionView
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView == self.collectionViewOne{
return imagesArray.count
}else{
return selectionArray.count
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if collectionView == self.collectionViewOne{
guard let cellOne = collectionView.dequeueReusableCell(withReuseIdentifier: "firstCollectionViewCell", for: indexPath) as? CollectionViewCell else{
fatalError()
}
cellOne.configureCollection(photo: imagesArray[imagesArray.count - indexPath.row - 1])
return cellOne
}else{
guard let cellTwo = collectionView.dequeueReusableCell(withReuseIdentifier: "secondCollectionViewCell", for: indexPath) as? SelectCollectionViewCell else{
fatalError()
}
cellTwo.confCollectionView(selectionText: selectionArray.last!)
return cellTwo
}
}
}
这个好的方法,你必须在 tableViewHeader
中添加 collectionView
然后每当您向上滚动 tableView
您的 collectionView
部分也会向上滚动
按照以下步骤在特定指标上加载传感器:
if(indexpath.row == 0){
//load first tableView cell with collection view
}
else if (indexpath.row == 1){
//load second tableView cell with collection view
}
else{
//load table view cell here
}
我正在尝试将两个现有的 collection 视图单元格与它们自己的首选项添加到我已经存在的 table 视图的前两个单元格中,而不会丢失其他 table 视图单元格。现在每个视图都可以手动正常工作。 This is my UI
Collection V1:
import UIKit
final class CollectionViewCell: UICollectionViewCell {
@IBOutlet weak var images: UIImageView!
public func configureCollection(photo: UIImage) {
images.image = photo
images.layer.cornerRadius = 12
}
}
Collection V2:
import UIKit
final class SelectCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var selectionTextLabel: UILabel!
public func confCollectionView(selectionText: String){
selectionTextLabel.text = selectionText
}
}
Table 查看
import UIKit
final class homePageTableView: UITableViewCell {
@IBOutlet weak var productPhoto: UIImageView!
@IBOutlet weak var productName: UILabel!
public func configureHomeShop(photo: UIImage, item: String) {
productName.text = item
productPhoto.image = photo
}
}
查看所有内容所在的控制器:
class homeView: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UITableViewDataSource, UITableViewDelegate{
@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var collectionViewOne: UICollectionView!
@IBOutlet weak var collectionViewTwo: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
collectionViewOne.register(CollectionViewCell.self, forCellWithReuseIdentifier: "itemsCollectionViewCell")
collectionViewTwo.register(SelectCollectionViewCell.self, forCellWithReuseIdentifier: "SelectCollectionViewCell")
collectionViewTwo.dataSource = self
collectionViewTwo.delegate = self
collectionViewOne.dataSource = self
collectionViewOne.delegate = self
tableView.dataSource = self
tableView.delegate = self
}
// **Functions**
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return itemsArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "shopCell", for: indexPath) as? homePageTableView else {
fatalError()
}
cell.configureHomeShop(photo: photoArrayTV.first!, item: itemsArray.first!)
return cell
}
// MARK: - CollectionView
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView == self.collectionViewOne{
return imagesArray.count
}else{
return selectionArray.count
}
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if collectionView == self.collectionViewOne{
guard let cellOne = collectionView.dequeueReusableCell(withReuseIdentifier: "firstCollectionViewCell", for: indexPath) as? CollectionViewCell else{
fatalError()
}
cellOne.configureCollection(photo: imagesArray[imagesArray.count - indexPath.row - 1])
return cellOne
}else{
guard let cellTwo = collectionView.dequeueReusableCell(withReuseIdentifier: "secondCollectionViewCell", for: indexPath) as? SelectCollectionViewCell else{
fatalError()
}
cellTwo.confCollectionView(selectionText: selectionArray.last!)
return cellTwo
}
}
}
这个好的方法,你必须在 tableViewHeader
collectionView
然后每当您向上滚动 tableView
您的 collectionView
部分也会向上滚动
按照以下步骤在特定指标上加载传感器:
if(indexpath.row == 0){
//load first tableView cell with collection view
}
else if (indexpath.row == 1){
//load second tableView cell with collection view
}
else{
//load table view cell here
}