したがって、このコレクションビューには、右上隅に編集ボタンを含むセルがあります。アクションをそれに関連付けるにはどうすればよいですか?
collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
にcell.editbutton.addTarget
を追加してみましたが、touchUpInsideイベントが検出されません。
あなたのために必要になるかもしれません-
このコードをcellForItemAtIndexPath
に記述します
Swift 2.X
let editButton = UIButton(frame: CGRectMake(0, 20, 40,40))
editButton.setImage(UIImage(named: "editButton.png"), forState: UIControlState.Normal)
editButton.addTarget(self, action: #selector(editButtonTapped), forControlEvents: UIControlEvents.TouchUpInside)
cell.addSubview(editButton)
Swift 3.X
let editButton = UIButton(frame: CGRect(x:0, y:20, width:40,height:40))
editButton.setImage(UIImage(named: "editButton.png"), for: UIControlState.normal)
editButton.addTarget(self, action: #selector(editButtonTapped), for: UIControlEvents.touchUpInside)
cell.addSubview(editButton)
そしてあなたの行動を実行する-
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func editButtonTapped() -> Void {
print("Hello Edit Button")
}
UICollectionViewCellでUIButtonのアウトレットを作成し、In
func collectionView(_ collectionView: UICollectionView,
cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
cell.button.tag = indexPath.row
cell.button.addTarget(self,
action: #selector(self.yourFunc(),
for: .touchUpInside)
}
func yourFunc(sender : UIButton){
print(sender.tag)
}
ボタンとUICollectionViewCellでuserInteractionが有効になっていることを確認します。
protocol CollectionViewCellDelegte {
func collectionViewCellDelegte(didClickButtonAt index: Int)
}
class ImageCollectionViewCell: UICollectionViewCell {
var index = 0
var delegte: CollectionViewCellDelegte? = nil
@IBAction func buttonAction(_ sender: UIButton) {
if let del = self.delegte {
del.collectionViewCellDelegte(didClickButtonAt: index)
}
}
}
UICollectionViewセルの[テイク]ボタン(プログラムまたはストーリーボードを使用)。セルクラスファイルでそのボタンのアクションを追加し、そのセルクラスファイルでデリゲートを宣言し、ボタンアクションメソッドで同じデリゲートを呼び出して編集アクションを実行します。
次に、コレクションビューを作成したViewControllerに同じデリゲートを実装します。