自定义UICollectionViewCell处理按钮按下

时间:2015-03-02 09:51:24

标签: swift ios8 uicollectionview cell uicollectionviewcell

在我的应用程序中,我有一个自定义collectionViewCell。我们称之为customCell。这个customCell包含一个titleLabel,一个imageView和两个按钮。我们称之为tlLbl,imgView,btn1和btn2。

目标:如果我点击其中一个按钮,我想提供一个新的viewController。这个新的viewController应该获取tlLbl和imgView作为参数。我需要两个,因为我也会在新的viewController中显示标签和图像。

考虑:最干净的解决方案是在customCell类中显示新的viewController。传递参数在这里不是问题。但是无法在customCell类中更改视图。

好的,没关系。下一步解决我可以处理当前viewController中的按钮操作。在btn1和btn2的collectionView委托函数“cellForItemAtIndexPath”中添加GestureRecognizer应该可以解决这个问题。哦不,它没有解决问题。我目前的代码:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
   let customCell:customCellClass = collectionView.dequeueReusableCellWithReuseIdentifier("customCell", forIndexPath: indexPath) as customCellClass

   customCell.tlLbl.text="Test1"
   customCell.imgView.image=UIImage(named: "myImg.png")

   var tapRec = UITapGestureRecognizer(target: self, action: "btnTapped")
   var tapRec2 = UITapGestureRecognizer(target: self, action: "btnTapped2")

   customCell.btn1.addGestureRecognizer(tapRec)
   customCell.btn2.addGestureRecognizer(tapRec2)

   return customCell
}

//Btn tapped handler
func btnTapped() {
   let vc = newViewController() //change this to your class name
   self.presentViewController(vc, animated: true, completion: nil)
}

func btnTapped2() {
   let vc = newViewController2() //change this to your class name
   self.presentViewController(vc, animated: true, completion: nil)
}

问题:在点击customCell中的按钮后,如何将customCell中的tlLbl和imgView传递给新的viewController。 UITapGestureRecognizer中的action参数

var tapRec = UITapGestureRecognizer(target: self, action: "btnTapped")

不允许传递您自己的参数。

我需要帮助。 Puh ......

1 个答案:

答案 0 :(得分:0)

我只使用numberOfItemsInSection方法。它返回jsonFiles的计数。

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  return jsonParsedArr.count
}

jsonParsedArr是一个带有json内容的数组。

对于customCell,我创建了一个在“viewDidLoad”中注册的nib文件。