首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在UICollectionView中获取ID选定记录

如何在UICollectionView中获取ID选定记录
EN

Stack Overflow用户
提问于 2018-06-04 16:14:37
回答 2查看 910关注 0票数 -1

我有这样的代码:

代码语言:javascript
复制
@IBOutlet weak var collectionView1: UICollectionView!
    @IBOutlet weak var collectionView2: UICollectionView!

    @IBAction func TipDetailBtnPressed(_ sender: Any) {
       showSubViewInContainerView(view: "TipDetailsView", parm: 0)
    }
    @IBAction func TipDetailPDFBtnPressed(_ sender: Any) {
        showSubViewInContainerView(view: "TipDetailsPDFView", parm: 0)
    }

    let tipObjectArray = [
        TipObject(id: 1, description: "Jakość frytek nas nie zadawala", image: UIImage(named: "a1.jpg")),
        TipObject(id: 2, description: "Kolor frytek jest niesatysfakcjonujący", image: UIImage(named: "a2.jpg")),
        TipObject(id: 3, description: "LOT i reklamacja", image: UIImage(named: "a3.jpg")),
        TipObject(id: 4, description: "Olej nie spełnia naszych oczekiwań", image: UIImage(named: "a4.jpg")),
        TipObject(id: 5, description: "jakiś fajny", image: UIImage(named: "a5.jpg"))
    ]

    let leafletsObjectArray = [
        LeafletsObject(id: 1, description: "AV-AddedValueFries-Ulotka", image: UIImage(named: "d1.jpg")),
        LeafletsObject(id: 2, description: "AV-AddedValueFries-Ulotka 23112", image: UIImage(named: "d2.jpg")),
        LeafletsObject(id: 3, description: "Ulotka", image: UIImage(named: "d3.jpg")),
        LeafletsObject(id: 4, description: "Fajna ulotka", image: UIImage(named: "d4.jpg")),
    ]


    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView1.dataSource = self
        collectionView1.delegate = self
        collectionView2.dataSource = self
        collectionView2.delegate = self
    }

    func showSubViewInContainerView(view: String, parm: Int){
        let viewController = self.parent as! MainViewControler
        viewController.showSubViewInContainerView(view: view, parms: parm)
    }
}

// MARK: - UI
extension TipViewController: UICollectionViewDelegate, UICollectionViewDataSource{
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        if collectionView == collectionView1 {
            return tipObjectArray.count
        }
        else {
            return leafletsObjectArray.count
        }
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        if collectionView == collectionView1 {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell1", for: indexPath) as! TipCollectionViewCellTips
            cell.titleLabel.text = tipObjectArray[indexPath.item].description
            cell.imgView.image = tipObjectArray[indexPath.item].image
            return cell
        }
        else {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell2", for: indexPath) as! TipCollectionViewCellLeaflets
            cell.titleLabel2.text = leafletsObjectArray[indexPath.item].description
            cell.imgView2.image = leafletsObjectArray[indexPath.item].image
            return cell
        }
    }


func showSubViewInContainerView(view: String, parms: Int){
        let controller = storyboard!.instantiateViewController(withIdentifier: view)

        systemContainerView.subviews.forEach { $0.removeFromSuperview() }

        if view == "ConceptGalleryView" {
            let con =  controller as! ConceptGalleryViewController
            con.idGallery = parms
        }


        systemContainerView.addSubview(controller.view)
        addChildViewController(controller)
        controller.view.translatesAutoresizingMaskIntoConstraints = false

        systemContainerView.addSubview(controller.view)

        NSLayoutConstraint.activate([
            controller.view.leadingAnchor.constraint(equalTo: systemContainerView.leadingAnchor),
            controller.view.trailingAnchor.constraint(equalTo: systemContainerView.trailingAnchor),
            controller.view.topAnchor.constraint(equalTo: systemContainerView.topAnchor),
            controller.view.bottomAnchor.constraint(equalTo: systemContainerView.bottomAnchor)
            ])

        controller.didMove(toParentViewController: self)

        self.actualVisibleView = view
    }

}

showSubViewInContainerView函数用于在containerView中显示视图。

我的故事板:https://i.stack.imgur.com/a39qB.png

在TipDetailBtnPressed和TipDetailPDFBtnPressed中,我有一个函数:

代码语言:javascript
复制
showSubViewInContainerView(view: "TipDetailsView", parm: 0)

在parm中-我需要插入从collectionView项目中点击的记录(项目)的ID。我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2018-06-04 16:25:55

在didselect的帮助下,我们可以找到所选的数据和两个要保存在类级别的变量

代码语言:javascript
复制
var lastTipId: Int!
var lastLeafId: Int!



func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        if collectionView == collectionView1 {
            lastTipId = tipObjectArray[indexPath.item].id
            print(lastTipId)
        }
        else {
            lastLeafId = leafletsObjectArray[indexPath.item].id
            print(lastLeafId)
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2018-06-04 16:28:28

代码语言:javascript
复制
var lastTipId: Int?
var lastLeafId: Int?

//

代码语言:javascript
复制
 func collectionView(_ collectionView: UICollectionView, 
         didSelectItemAt indexPath: IndexPath) {

    if collectionView == collectionView1 {
       lastTipId = tipObjectArray[indexPath.row].id
    }
    else {
       lastLeafId = leafletsObjectArray[indexPath.row].id
    }
 }

//在为function参数设置var之前

代码语言:javascript
复制
if selectedTipId == nil {

   // Alert the user to select a tip

   return
}
showSubViewInContainerView(view: "TipDetailsView", parm: selectedTipId!)

在其他按钮单击中也是如此

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50676085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档