private let Cell_ID = "mutlCollectionViewCell_ID"
class MultCollectionVC: UIViewController {
lazy var mutlCollectionView: UICollectionView = {
let flowLayout = UICollectionViewFlowLayout.init()
flowLayout.itemSize = CGSize.init(width: 90, height: 90)
flowLayout.scrollDirection = UICollectionView.ScrollDirection.vertical
flowLayout.minimumLineSpacing = 10
flowLayout.minimumInteritemSpacing = 10
let mutlCollectionView = UICollectionView.init(frame: CGRect.zero, collectionViewLayout: flowLayout)
mutlCollectionView.showsVerticalScrollIndicator = false
mutlCollectionView.showsHorizontalScrollIndicator = false
mutlCollectionView.delegate = self
mutlCollectionView.dataSource = self
mutlCollectionView.register(MutlCollectionCell.self, forCellWithReuseIdentifier: Cell_ID)
mutlCollectionView.backgroundColor = .cyan
return mutlCollectionView
}()
lazy var models: Array<MutlCollectionViewModel> = {
let models = MutlCollectionViewModel.getModelList()
return models
}()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.mutlCollectionView.frame = CGRect.init(x: 0, y: 0, width: kScreenWidth, height: kScreenHeight)
self.view.addSubview(self.mutlCollectionView)
createBarButtonItems()
}
func createSubViews() {
}
func createBarButtonItems() {
let btn = UIButton(type: UIButton.ButtonType.custom)
btn.frame = CGRect.init(x: 0, y: 0, width: 60, height: 45)
btn.setTitle("编辑", for: UIControl.State.normal)
btn.setTitleColor(UIColor.blue, for: UIControl.State.normal)
btn.addTarget(self, action: #selector(btnAction), for: UIControl.Event.touchUpInside)
//self.navigationController?.navigationBar.addSubview(btn)
let rightBarButtonItem = UIBarButtonItem(customView: btn)
//let rightBarButtonItem1 = UIBarButtonItem(title: "哈哈", style: UIBarButtonItem.Style.plain, target: self, action: #selector(btnAction))
self.navigationItem.rightBarButtonItem = rightBarButtonItem
}
@objc func btnAction(sender: UIButton) {
print(sender)
self.mutlCollectionView.allowsMultipleSelection = true
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
extension MultCollectionVC: UICollectionViewDataSource, UICollectionViewDelegate {
// MARK: - UICollectionViewDataSource
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.models.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: Cell_ID, for: indexPath) as!
MutlCollectionCell
let model = self.models[indexPath.item]
cell.titleLabel.text = model.title
cell.subTitleLabel.text = model.subTitle
cell.closeButton.tag = indexPath.item
cell.btnBlcok = { (sender: UIButton) in
let tag = sender.tag
print("sender = \(tag)")
let clickModel = self.models[tag]
clickModel.isEdit = true
let clickIndexP = IndexPath(item: tag, section: 0)
self.models.remove(at: tag)
collectionView.reloadData()
//collectionView.reloadItems(at: [clickIndexP])
}
return cell
}
// MARK: UICollectionViewDelegate
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.deselectItem(at: indexPath, animated: true)
print("indexPath = \(indexPath)")
}
func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool {
return true
}
}
class MutlCollectionCell: UICollectionViewCell {
// block 点击
typealias BtnBlcok = ((_ sender: UIButton)->())
var btnBlcok: BtnBlcok?
lazy var titleLabel: UILabel = {
let titleLabel = UILabel.init()
titleLabel.textAlignment = .center
titleLabel.textColor = .systemBlue
titleLabel.backgroundColor = .gray
return titleLabel
}()
lazy var subTitleLabel: UILabel = {
let subTitleLabel = UILabel.init()
subTitleLabel.textAlignment = .center
subTitleLabel.textColor = .systemBlue
subTitleLabel.backgroundColor = .lightGray
return subTitleLabel
}()
lazy var closeButton: UIButton = {
let closeButton = UIButton(type: UIButton.ButtonType.custom)
//closeButton.frame = CGRect.init(x: 0, y: 0, width: 60, height: 45)
closeButton.setTitle("x", for: UIControl.State.normal)
closeButton.setTitleColor(UIColor.blue, for: UIControl.State.normal)
closeButton.addTarget(self, action: #selector(btnAction), for: UIControl.Event.touchUpInside)
return closeButton
}()
override init(frame: CGRect) {
super.init(frame: frame)
createSubViews()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func createSubViews() {
self.backgroundColor = .orange
self.contentView.addSubview(titleLabel)
self.contentView.addSubview(subTitleLabel)
self.contentView.addSubview(closeButton)
titleLabel.frame = CGRect.init(x: 0, y: 0, width: 90, height: 30)
subTitleLabel.frame = CGRect.init(x: 0, y: 40, width: 90, height: 30)
closeButton.frame = CGRect.init(x: 60, y: 0, width: 30, height: 30)
}
@objc func btnAction(sender: UIButton) {
//print("sender = \(sender)")
if self.btnBlcok != nil {
self.btnBlcok!(sender)
}
}
}
Swift-UICollectionView多选
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...