这是我正在努力的布局,我已经完成了设置由黑色边框表示的第1部分。我希望能够在故事板中布置我的多个单元格和部分而不是使用代码,这可能吗?
我在设置第2部分时遇到了困难,第2部分由蓝色边框和第1部分表示,它们具有不同的布局。
我设置布局的方法是否像wrowng一样?如果是这样,一些指导将不胜感激!
我的故事板(UICollectionView控制器)
答案 0 :(得分:1)
为了支持上面的布局,可以在每个UITableviewCell内部维护一个带有各种节标题和UICollectionview的UITableview,以具有水平滚动布局。 希望这有用。
答案 1 :(得分:0)
我觉得这不会奏效 因为集合视图将水平滚动设置为水平 最好和最简单的是在tableview中嵌套collectionview 这意味着你在一个viewcontroller中有mutipls collectionviews水平滚动 编辑 代码在评论中
class TableViewCell: UITableViewCell{
@IBOutlet weak var title: UILabel!
@IBOutlet weak var collection: UICollectionView!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
// super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
extension TableViewCell
{
func setCollectionViewDataSourceDelegate
<D: UICollectionView & UICollectionViewDataSource>
(_ dataSourceDelegate: D, forRow row:Int)
{
collection.delegate = dataSourceDelegate as! UICollectionViewDelegate
collection.dataSource = dataSourceDelegate
collection.reloadData()
}
}
视图控制器
UIViewController,UITableViewDelegate,UITableViewDataSource,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,UICollectionViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "maincell") as! TableViewCell
cell.title.text = names[indexPath.row]
cell.collection.tag = indexPath.row
//collection is the collection view
//tag is important so you assign the cell to the specific in the collection viewcellforitem
cell.collection.reloadData()
return cell
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if collectionView.tag == 0 {
// this is a collection view and it will be loaded in table view cell zero
return self.main1.count
}else {
return self.anotherarray.count }
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "sidecell", for: indexPath) as! Collection2
if collectionView.tag == 0 {
//belongs to tableview cell index 0
cell.title.text = self.main1[indexPath.row].Des
}
}
答案 2 :(得分:-2)
我解决这个问题的方法是创建一个新的UIViewController并在我需要的UICollectionViews中插入,然后相应地设置数据源和委托。