首页 > 解决方案 > 如何在集合视图中使用不同类型的单元格?

问题描述

我正在尝试创建一个关于社交网络的应用程序。在那里,用户可以发送两种不同类型的帖子(如图片帖子或文本帖子)。用户在另一个控制器中选择他们的帖子类型并创建他们的帖子。我创建了两个不同的单元格,并想用 if 语句调用 cellForItemAt。问题是我如何知道用户对帖子类型的选择?

// there is users post type selection with button
let writeButton: UIButton = {

    let wButton = UIButton()
    wButton.layer.cornerRadius = 7
    wButton.setBackgroundImage(#imageLiteral(resourceName: "writing"), for: .normal)
    wButton.setTitle("Writing", for: .normal)
    wButton.setTitleColor(UIColor.white, for: .normal)
    wButton.titleLabel?.font = UIFont(name: "AvenirNext-DemiBoldItalic", size: 18)
    wButton.heightAnchor.constraint(equalToConstant: 60).isActive = true
    wButton.layer.borderWidth = 1.5
    wButton.addTarget(self, action: #selector(tappedWriteButton), for: .touchUpInside)
    return wButton
}()

@objc func tappedWriteButton () {
    let writePost = WriteTitlePost()
    navigationController?.pushViewController(writePost, animated: true)
}

let mediaButton: UIButton = {

    let mButton = UIButton()
    mButton.layer.cornerRadius = 7
    mButton.backgroundColor = UIColor.orange
    mButton.setBackgroundImage(#imageLiteral(resourceName: "photography"), for: .normal)
    mButton.setTitle("Media Post", for: .normal)
    mButton.setTitleColor(UIColor.white, for: .normal)
    mButton.titleLabel?.font = UIFont(name: "AvenirNext-DemiBoldItalic", size: 18)
    mButton.layer.borderWidth = 1.5
    mButton.layer.borderColor = UIColor.orange.cgColor
    mButton.heightAnchor.constraint(equalToConstant: 60).isActive = true
    mButton.addTarget(self, action: #selector(tappedMediaButton), for: .touchUpInside)
    return mButton
}()

@objc func tappedMediaButton() {


    let layout = UICollectionViewFlowLayout()
    let mediaPost = MediaPost(collectionViewLayout: layout)
    let navController = UINavigationController(rootViewController: mediaPost)
    present(navController, animated: true, completion: nil)
}

标签: swiftuicollectionviewuicollectionviewcell

解决方案


推荐阅读