我有一个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
}
}
答案 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)
}
}