Ios 在UICollectionView中动态插入项

Ios 在UICollectionView中动态插入项,ios,swift,uicollectionview,uicollectionviewlayout,uicollectionviewflowlayout,Ios,Swift,Uicollectionview,Uicollectionviewlayout,Uicollectionviewflowlayout,我正在处理一个需要在UICollectionView中动态添加项的需求 这是我的ViewController 导入UIKit 类ViewController:UIViewController{ 枚举方向{ 病例水平 箱子竖直 } 变量enumDirection:方向=.Verticle var direction=“垂直” var SectionsAndRows=[Int]() 重写func viewDidLoad(){ super.viewDidLoad() SECTIONS SANDROWS

我正在处理一个需要在
UICollectionView
中动态添加项的需求

这是我的
ViewController

导入UIKit
类ViewController:UIViewController{
枚举方向{
病例水平
箱子竖直
}
变量enumDirection:方向=.Verticle
var direction=“垂直”
var SectionsAndRows=[Int]()
重写func viewDidLoad(){
super.viewDidLoad()
SECTIONS SANDROWS.append(4)
SECTIONS SANDROWS.append(3)
SectionsAndRows.append(2)
SectionsAndRows.append(1)
//SECTIONS SANDROWS.append(5)
}
@IBMOutlet var gridCollectionView:UICollectionView{
迪塞特{
gridCollectionView.bounces=false
}
}
@IBOutlet var gridLayout:UICollectionViewFlowLayout{
迪塞特{
//gridLayout.stickyRowsCount=0
gridLayout.scrollDirection=.horizontal
//gridLayout.stickyColumnsCount=0
gridLayout.minimumLineSpacing=5
gridLayout.minimumInteritemSpacing=5
}
}
}
//标记:-集合视图数据源和委托方法
扩展视图控制器:UICollectionViewDataSource{
func numberOfSections(在collectionView:UICollectionView中)->Int{
返回SectionsAndRows.count
}
func collectionView(collectionView:UICollectionView,numberOfItemsInSection:Int)->Int{
打印(节和行[节])
返回节sandrows[节]
}
func collectionView(collectionView:UICollectionView,cellForItemAt indexPath:indexPath)->UICollectionViewCell{
guard let cell=collectionView.dequeueReusableCell(带ReuseIdentifier:CollectionViewCell.reuseID,for:indexPath)作为?CollectionViewCell else{
返回UICollectionViewCell()
}
打印(“当前节==\(indexPath.Section)CurrentRow==\(indexPath.row)及其行数==\(SectionsAndRows[indexPath.Section]))
cell.titleLabel.text=“”
cell.btn.addTarget(self,action:#选择器(handleAdd(sender:)),for:.touchUpInside)
cell.btn.tag=(indexPath.section*1000)+indexPath.row
如果enumDirection=.Verticle{
如果indexath.section==SectionsAndRows.count-1{
cell.btn.setTitle(“+”,表示:。正常)
}否则{
cell.btn.setTitle(“\(indexPath)”,表示:。正常)
}
}
返回单元
}
@objc func handleAdd(发送方:UIButton){
//做些手术
}
}
扩展视图控制器:UICollectionViewDelegateFlowLayout{
func collectionView(collectionView:UICollectionView,布局collectionViewLayout:UICollectionViewLayout,MinimumLineSpacingforSection:Int)->CGFloat{
返回5
}
func collectionView(collectionView:UICollectionView,布局collectionViewLayout:UICollectionViewLayout,sizeForItemAt indexPath:indexPath)->CGSize{
返回CGSize(宽:100,高:100)
}
}
CollectionViewCell.swift

导入UIKit
类CollectionViewCell:UICollectionViewCell{
静态let reuseID=“CollectionViewCell”
@IBOutlet弱var btn:UIButton!
@IBVAR弱var标题标签:UILabel!
}
如果运行该代码,它将显示一个集合,其中每行有一行和一列。如果取消注释
viewDidLoad()
SectionsAndRows.append(5)
)函数的最后一行,则该函数工作正常


我的观察结果是,
CollectionView
的最后一部分的列数最高。这是正确的还是这是CollectionView的一个缺陷?

您能准确地说明您的问题吗?你需要帮助做什么?您的观察结果是:当
节sandrows.append(5)
被注释或未注释时?@Starsky,我想在第一节显示4项,在第二节显示3项,依此类推。但所有部分仅显示一项。现在取消最后一行的注释。它将正确显示所有项目。所以,我的问题是,这是一个bug还是有解决方法?我假设您正在脚本中设置
UICollectionViewDelegate
UICollectionViewDataSource
,因为我在您的代码中没有看到它。在这种情况下,在调整
部分和行后,似乎永远不会使用
reloadData
重新加载数据,对吗?或者你只是没有发布那个部分?我从故事板上设置的。你有没有机会运行代码@creeperspeakDo你有你想要的结果的图像?是否希望您的各个部分水平滚动,而其他部分保持静止?也许你需要一个更复杂的方法来实现你的目标。你能准确地陈述你的问题吗?你需要帮助做什么?您的观察结果是:当
节sandrows.append(5)
被注释或未注释时?@Starsky,我想在第一节显示4项,在第二节显示3项,依此类推。但所有部分仅显示一项。现在取消最后一行的注释。它将正确显示所有项目。所以,我的问题是,这是一个bug还是有解决方法?我假设您正在脚本中设置
UICollectionViewDelegate
UICollectionViewDataSource
,因为我在您的代码中没有看到它。在这种情况下,在调整
部分和行后,似乎永远不会使用
reloadData
重新加载数据,对吗?或者你只是没有发布那个部分?我从故事板上设置的。你有没有机会运行代码@creeperspeakDo你有你想要的结果的图像?是否希望您的各个部分水平滚动,而其他部分保持静止?也许你需要一个更复杂的方法来实现你想要的目标。