使用Button编辑UICollectionViewCell中的困难

时间:2015-12-25 15:03:14

标签: ios swift uibutton uicollectionviewcell

我已经实施了一个修改按钮,该按钮会为我的UICollectionViewCell添加一个按钮。当我按下Edit =>编辑变为"完成"当我按下完成时,它应该删除按钮。 我的代码允许我添加按钮,但不会隐藏它们。 任何想法?

 @IBAction func editButton(sender: AnyObject) {

if(editButton.titleLabel?.text as String! == "Edit")
  {

    editButton.setTitle("Done", forState: UIControlState.Normal)
    for item in self.mainCollectionView.visibleCells() as! [SettingsCollectionViewCell] {

        let indexpath : NSIndexPath = self.mainCollectionView!.indexPathForCell(item as SettingsCollectionViewCell)!
        let cell : SettingsCollectionViewCell = mainCollectionView!.cellForItemAtIndexPath(indexpath) as! SettingsCollectionViewCell

        //Close Button
        let close : UIButton = cell.collectionViewButton
        close.hidden = false
    }
} 
else 
{
    editButton.setTitle("Edit", forState: UIControlState.Normal)
    self.mainCollectionView?.reloadData()
 }}

cellForRowAtIndexPath

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

    let collectionCell:SettingsCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("collectionCell", forIndexPath: indexPath) as! SettingsCollectionViewCell

      if self.editButton.titleLabel?.text as String! == "Edit" 
        {
          collectionCell.collectionViewButton.hidden = true
        }
     else if editButton.titleLabel?.text as String! == "Done"
        {
         collectionCell.collectionViewButton.hidden = false
        }

        collectionCell.collectionViewButton!.layer.setValue(indexPath.row, forKey: "index")
        collectionCell.collectionViewButton!.addTarget(self, action: "deletePhoto:", forControlEvents: UIControlEvents.TouchUpInside)

        return collectionCell
}

2 个答案:

答案 0 :(得分:1)

您需要更改cellForItemAtIndexPath中的逻辑,以便从按钮中检索标题。

要从按钮中检索标题文字,您需要使用titleForState(UIControlState)代替titleLabel?.text

以下是cellForItemAtIndexPath

中条件语句的代码段
if self.editButton.titleForState(.Normal) == "Edit" {
       collectionCell.collectionViewButton.hidden = true
}
else if self.editButton.titleForState(.Normal) == "Done" {
    collectionCell.collectionViewButton.hidden = false
}

答案 1 :(得分:1)

我认为这里最好的策略是在主故事板上创建一个按钮,并在按钮的上下文菜单中选中“隐藏”。

要更改按钮的文本:为按钮创建插座(是,插座)。     @IBOutlet var editbutton: UIButton!

然后取消隐藏它:

editbutton.hidden = false

(如果需要,你可以将它放在if语句中)

在按钮的动作内部(您必须将按钮分配给动作)如果按钮已被按下“完成”,则执行此操作以隐藏按钮:

if editbutton.title == "Done" && editbutton.hidden == false {
editbutton.hidden = true
}

然后,当它仍然显示编辑时更改按钮的文本:

if editbutton.title == "Edit" {
editbutton.title = "Done" 
}

必须按此顺序执行操作,否则按钮将变为“完成”而不会被隐藏,因此计算机将在用户再次按下它之前继续隐藏它。