2016-09-12 3 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

Где ваша попытка переключить свойство 'hidden' кнопок? Какую помощь вы действительно ищете? – rmaddy

+0

Я попытался использовать тег для кнопок, но это не сработало. Я не уверен, как ссылаться на все эти кнопки. –

+0

Как насчет наличия логической переменной, которую ваши ячейки читают, и установить их скрытое свойство, например, deleteButton.hidden = myBool. И каждый раз он устанавливает перезагрузку видимых ячеек. – ohr

ответ

1

Я думаю, что вы хотите сделать, это перебрать все данные по индексу, а затем вызвать cellForItemAtIndexPath: на вашем UICollectionView для каждого индекса. Затем вы можете взять эту существующую ячейку, отбросить ее до вашего определенного типа 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

Смежные вопросы