我已经实施了一个修改按钮,该按钮会为我的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
}
答案 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"
}
必须按此顺序执行操作,否则按钮将变为“完成”而不会被隐藏,因此计算机将在用户再次按下它之前继续隐藏它。