2016-09-12 2 views
0

プログラムでセルを作成し、それぞれに削除ボタンを追加しています。問題は、自分の.hidden状態を切り替えることです。このアイデアは、ボタンの状態をすべて同時に切り替える編集ボタンを持つことです。たぶん私はこれについて間違った方法をとっていますか?Swift:UICollectionViewセルのボタンを非表示にする

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("verticalCell", forIndexPath: indexPath) as! RACollectionViewCell 
    let slide = panelSlides[indexPath.row] 
    cell.slideData = slide 
    cell.slideImageView.setImageWithUrl(NSURL(string: IMAGE_URL + slide.imageName + ".jpg")!) 
    cell.setNeedsLayout() 

    let image = UIImage(named: "ic_close") as UIImage? 
    var deleteButton = UIButton(type: UIButtonType.Custom) as UIButton 
    deleteButton.frame = CGRectMake(-25, -25, 100, 100) 
    deleteButton.setImage(image, forState: .Normal) 
    deleteButton.addTarget(self,action:#selector(deleteCell), forControlEvents:.TouchUpInside) 
    deleteButton.hidden = editOn 
    cell.addSubview(deleteButton) 
    return cell 
} 


@IBAction func EditButtonTap(sender: AnyObject) { 
    editOn = !editOn 
    sidePanelCollectionView.reloadData() 
} 
+0

ボタンの「隠れた」プロパティをどこで切り替えようとしていますか?あなたは実際に何を手伝っていますか? – rmaddy

+0

ボタンのタグを使ってみましたが、うまくいきませんでした。私はこれらのボタンをすべて参照する方法がわかりません。 –

+0

あなたのセルが非表示のプロパティを読み込んで設定するブール変数を持つこと、つまりdeleteButton.hidden = myBoolはどうでしょうか。そして、毎回、目に見える細胞を再ロードするように設定されています。 – ohr

答えて

1

私は何がやりたいことは、インデックスですべてのデータを反復処理し、各指標のためにあなたのUICollectionViewcellForItemAtIndexPath:を呼んだと思います。次に、既存のセルを取り出し、特定のタイプにキャストしてas! RACollectionViewCellボタンの隠し値をこのように設定します。

例(謝罪は、私が今まさにこのことを確認するためにXcodeでないんだけど、これは要旨である):

for (index, data) in myDataArray.enumerate() { 
    let cell = collectionView.cellForRowAtIndexPath(NSIndexPath(row: index, section: 0)) as! RACollectionViewCell 
    cell.deleteButton.hidden = false 
} 

あなたはおそらくも追跡し、あなたのビューコントローラでisEditingブール変数のいくつかの並べ替えが必要スクロールすると、新しく設定されたセルがボタンの有無にかかわらず表示され続けるように、編集状態になっていることを確認してください。上記の既存のコードが必要になり、スクロールが発生しても機能し続けることを確認してください。新しい削除ボタンを毎回作成するのではなく、ストーリーボードにボタンを置いて参照を設定してから、同じようなものを使用するだけです。cell.deleteButton.hidden = !isEditing

関連する問題