如何使用集合视图按钮在swift

时间:2015-11-11 22:52:10

标签: ios swift uicollectionview

我有一个CollectionViewController,其中填充了3个按钮。视图效果很好,但如何根据所选按钮选择不同的视图控制器?我添加了按钮作为操作,但我不知道如何指定选择了哪个按钮,因此我可以将用户发送给不同的viewcontrollers。

import UIKit

private let reuseIdentifier = "Cell"

class CollectionViewController: UICollectionViewController {

var imageArray = [UIImage(named: "tempOwl.png"), UIImage(named: "tempPuzzle.png"), UIImage(named: "tempHouse.png")]

override func viewDidLoad() {
    super.viewDidLoad()

    self.clearsSelectionOnViewWillAppear = false
    self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

}

@IBAction func menuButton(sender: UIButton) {
    let controller = storyboard?.instantiateViewControllerWithIdentifier("myHome")
    presentViewController(controller!, animated: true, completion: nil)

}

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 3
}

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as UICollectionViewCell
    let imageView = cell.viewWithTag(1) as! UIButton
    imageView.setBackgroundImage(self.imageArray[indexPath.row], forState: .Normal)

    return cell
}
}

3 个答案:

答案 0 :(得分:2)

单元格中按钮的按钮操作方法

link_to

答案 1 :(得分:0)

我建议创建一个类型为UICollectionViewCell的类,并在单元格中创建IBAction。

并将collectionViewController设置为委托。所以你可以传递值。

因此,您可以在集合视图控制器中创建一个函数,并为单元格1提供类似于int 1的参数。

答案 2 :(得分:0)

如果单元格中有多个按钮,则应实现委托。然后,将视图控制器设置为单元格的委托。此类委托的示例实现可能如下所示:

protocol YourCustomCellDelegate {

    func firstButtonPressed(cell: YourCustomCell)
    func secondButtonPressed(cell: YourCustomCell)
}

class YourCustomCell : UICollectionViewCell {

    var delegate:YourCustomCellDelegate?

    @IBOutlet weak var firstButton: UIButton!
    @IBOutlet weak var secondButton: UIButton!

    @IBAction func firstButtonTapped(sender: AnyObject) {

        delegate?.firstButtonPressed(self)
    }

    @IBAction func secondButtonTapped(sender: AnyObject) {

        delegate?.secondButtonPressed(self)
    }
}